J'essaie de télécharger un fichier en PHP.Comment puis-je extraire les liens d'une page de HTML?
$file = file_get_contents($url);
Comment dois-je télécharger le contenu des liens dans le fichier $ url ...
J'essaie de télécharger un fichier en PHP.Comment puis-je extraire les liens d'une page de HTML?
$file = file_get_contents($url);
Comment dois-je télécharger le contenu des liens dans le fichier $ url ...
Vous devez analyser la chaîne HTML résultant, soit manuellement, soit via un plug-in 3rd party.
merci Dutchie432 ... –
Cela nécessite l'analyse syntaxique HTML, ce qui est tout un défi en PHP. Pour vous éviter beaucoup de problèmes, téléchargez une bibliothèque d'analyse HTML, telle que PHPQuery (http://code.google.com/p/phpquery/). Ensuite, vous devrez sélectionner tous les liens avec pq('a')
, les parcourir pour obtenir leurs valeurs d'attribut href
, et pour chacun d'entre eux, le convertir de relatif en absolu et exécuter un file_get_contents
sur l'URL résultante. J'espère que ces pointeurs devraient vous aider à démarrer.
merci Nathan MacInnes –
Vous voulez donc trouver toutes les URL dans un fichier donné? Regex à la rescousse ... et quelques exemples de code ci-dessous qui devrait faire ce que vous voulez:
$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: Quand je comprends bien votre question, vous voulez maintenant télécharger le contenu des URL trouvées. Vous le feriez dans la boucle foreach
en appelant file_get_contents
pour chaque URL, mais vous souhaiterez probablement effectuer un filtrage préalable (comme ne pas télécharger d'images, etc.).
Télécharger les liens en appelant file_get_contents en passant le lien en argument. – Oswald
duplication possible de [meilleures méthodes pour analyser HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon