Kom ihåg mig?
Home Menu

Menu


Hämta filer med php script (lite hjälp)

 
Ämnesverktyg Visningsalternativ
Oläst 2010-02-09, 12:13 #1
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
Standard Hämta filer med php script (lite hjälp)

Hej

Söker ett skript som hämtar filer info enligt en fil-lista.

Har ett script färdigt men det hämtar bara en sida och inte alla från listan.

<?php
$url = "XXXXXX347415";
$content = file_get_contents($url);

$titlestart=strpos($content,"<table>");
$titleslut = strpos($content,"</table>");

$spec=substr($content,$titlestart,$titleslut-$titlestart)."</table>";

file_put_contents("347415.htm",$spec,LOCK_EX);

?>

<?php echo $spec; ?>
it-shoppen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 12:20 #2
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Det ser ut som att du försöker tolka HTML med något som liknar reguljära uttryck. Jag rekommenderar att du använder PHPs in inbyggda XML-klasser för att tolka dokument istället, så kan du till exempel plocka ut alla noder av en viss typ och iterera över dem, alltså oavsett hur många noder det är.

Ett enkelt exempel där jag skriver ut innehållet i alla <p>-element:

Kod:
$html = new DOMDocument();
$html->loadHTML($content);

$ps = $html->getElementByTagName('p');
for($i = 1; $i < $ps->length; $i++) {
    echo $ps->item($i)->nodeValue . "\n";
}
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 12:34 #3
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
Citat:
Ursprungligen postat av emilv Visa inlägg
Det ser ut som att du försöker tolka HTML med något som liknar reguljära uttryck. Jag rekommenderar att du använder PHPs in inbyggda XML-klasser för att tolka dokument istället, så kan du till exempel plocka ut alla noder av en viss typ och iterera över dem, alltså oavsett hur många noder det är.

Ett enkelt exempel där jag skriver ut innehållet i alla <p>-element:

Kod:
$html = new DOMDocument();
$html->loadHTML($content);

$ps = $html->getElementByTagName('p');
for($i = 1; $i < $ps->length; $i++) {
    echo $ps->item($i)->nodeValue . "\n";
}

Ditt script fungerar nog också men det hjälper inte mig.
Det hämtar ändå bara från 1st angiven sida och inte enligt fillistan.txt med ca 1000 länkar.
it-shoppen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 12:55 #4
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Mitt skript visar en metod att tolka HTML-filer. Du har ännu inte sagt vad du ska med det till, eller ens vad som blir fel.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 13:01 #5
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
Citat:
Ursprungligen postat av emilv Visa inlägg
Mitt skript visar en metod att tolka HTML-filer. Du har ännu inte sagt vad du ska med det till, eller ens vad som blir fel.
Söker ett skript som hämtar filer enligt en fillista.txt

Scriptet ska läsa först länken i fillista.txt
och med hjälp av reguljära uttryck hämta tex en tabel som finns på den sidan länk 1 hänvisar till i fillista.txt
När den är hämtad ska den spars ner till en fil med det fil namn som finns i länk nr 1 i fillistan
Där efter börjar det om igen med länk nr 2 och så vidare.

Scriptet jag har fungerar men doch bara på 1st angiven länk sida.

Senast redigerad av it-shoppen den 2010-02-09 klockan 13:05
it-shoppen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 13:35 #6
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
Citat:
Ursprungligen postat av emilv Visa inlägg
Det ser ut som att du försöker tolka HTML med något som liknar reguljära uttryck. Jag rekommenderar att du använder PHPs in inbyggda XML-klasser för att tolka dokument istället, så kan du till exempel plocka ut alla noder av en viss typ och iterera över dem, alltså oavsett hur många noder det är.

Ett enkelt exempel där jag skriver ut innehållet i alla <p>-element:

Kod:
$html = new DOMDocument();
$html->loadHTML($content);

$ps = $html->getElementByTagName('p');
for($i = 1; $i < $ps->length; $i++) {
    echo $ps->item($i)->nodeValue . "\n";
}
Långt ifrån alla sidor är XHTML kompitabla. Och därmed så kommer inte XML klasserna att funka.

Men däremot är de att rekommendera.
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-09, 23:20 #7
crazzys avatar
crazzy crazzy är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2007
Inlägg: 1 089
crazzy crazzy är inte uppkopplad
Har WN som tidsfördriv
crazzys avatar
 
Reg.datum: Aug 2007
Inlägg: 1 089
Citat:
Ursprungligen postat av it-shoppen Visa inlägg
Söker ett skript som hämtar filer enligt en fillista.txt

Scriptet ska läsa först länken i fillista.txt
och med hjälp av reguljära uttryck hämta tex en tabel som finns på den sidan länk 1 hänvisar till i fillista.txt
När den är hämtad ska den spars ner till en fil med det fil namn som finns i länk nr 1 i fillistan
Där efter börjar det om igen med länk nr 2 och så vidare.

Scriptet jag har fungerar men doch bara på 1st angiven länk sida.
lite kod att spinna vidare på:
Kod:
$list = file_get_contents("listan.txt");
$urls = explode("\n",$list);
foreach($urls as $url) {
    $file = file_get_contents($url);
    /* Insert other blablabla-code here */
}
crazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-10, 08:32 #8
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
Citat:
Ursprungligen postat av crazzy Visa inlägg
lite kod att spinna vidare på:
Kod:
<?php
$list = file_get_contents("listan.txt");
$urls = explode("\n",$list);
foreach($urls as $url) {
    $file = file_get_contents($url);
    /* Insert other blablabla-code here */
}
?>
Tackar det kan vara något till att börja med.

Testade det och fick felmedelande.

Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in C:\wamp\www\script\test.php on line 5
it-shoppen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-10, 09:24 #9
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Troligtvis innehåller din list-fil även en radbrytning på slutet av sista raden. Det gör att loopen kör en sista gång på en tom rad. Lägg in en if-sats i början av loopen och kolla om raden är tom.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-10, 09:55 #10
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
it-shoppen it-shoppen är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2008
Inlägg: 30
Citat:
Ursprungligen postat av emilv Visa inlägg
Troligtvis innehåller din list-fil även en radbrytning på slutet av sista raden. Det gör att loopen kör en sista gång på en tom rad. Lägg in en if-sats i början av loopen och kolla om raden är tom.
Tog bort radbrytningen i list-filen.tex

Koden fungerar bra så långt.

Men den hämtar dock bara info från sista länken "raden" i list-filen.

<?php
$list = file_get_contents("listan.txt");
$urls = explode("\n",$list);
foreach($urls as $url) {
$file = file_get_contents($url);
$tablestart=strpos($file,"<table>");
$tableslut = strpos($file,"</table>");

$spec=substr($file,$tablestart,$tableslut-$tablestart)."</table>";



/* Insert other blablabla-code here */
}
?>
<?php echo $spec; ?>

Senast redigerad av it-shoppen den 2010-02-10 klockan 10:05
it-shoppen är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017