2011-01-06 11 views
0

Ich versuche, eine Datei in PHP zu downloaden.Wie kann ich die Links von einer HTML-Seite extrahieren?

$file = file_get_contents($url); 

Wie soll ich den Inhalt der Links innerhalb der Datei in $ url herunterladen ...

+0

Laden Sie Links herunter, indem Sie file_get_contents aufrufen und den Link als Argument übergeben. – Oswald

+0

möglich Duplikat von [Beste Methoden, HTML zu parsen] (http://StackOverflow.com/questions/3577641/best-methods-to-Parse-HTML/3577662#3577662) – Gordon

Antwort

0

Sie benötigen die resultierende HTML-Zeichenfolge, entweder manuell oder über eine 3rd-Party-Plugin zu analysieren.

HTML Scraping in Php

+0

Danke Dutchie432 ... –

2

Dies erfordert Parsen HTML, die in PHP eine ziemliche Herausforderung ist. Um Ihnen viele Probleme zu ersparen, laden Sie eine HTML-Parsing-Bibliothek wie PHPQuery (http://code.google.com/p/phpquery/) herunter. Dann müssen Sie alle Links mit pq('a') auswählen, durchlaufen Sie sie durchlaufen ihre href Attributwerte, und für jeden, konvertieren Sie es von relativ zu absolut und führen Sie eine file_get_contents auf die resultierende URL. Hoffentlich sollten Sie mit diesen Zeigern beginnen.

+0

danke Nathan MacInnes –

1

Sie möchten also alle URLs in einer bestimmten Datei finden? REGEX zur Rettung ... und einige Beispielcode, unter dem sollte das tun, was Sie wollen:

$file = file_get_contents($url); 
if (!$file) return; 
$file = addslashes($file); 

//extract the hyperlinks from the file via regex 
preg_match_all("/http:\/\/[A-Z0-9_\-\.\/\?\#\=\&]*/i", $file, $urlmatches); 

//if there are any URLs to be found 
if (count($urlmatches)) { 
    $urlmatches = $urlmatches[0]; 
    //count number of URLs 
    $numberofmatches = count($matches); 
    echo "Found $numberofmatches URLs in $url\n"; 

    //write all found URLs line by line 
    foreach($urlmatches as $urlmatch) { 
     echo "URL: $urlmatch...\n"; 
    } 
} 

EDIT: Wenn ich Ihre Frage richtig verstanden habe, haben Sie jetzt den Inhalt der gefundenen URLs herunterladen möchten. Sie würden das in der foreach Schleife machen, die file_get_contents für jede URL aufruft, aber Sie möchten vermutlich vorher etwas filtern (wie Bilder nicht downloaden usw.).

Verwandte Themen