2 votes

Balayage périodique du HTML

J'envisage de développer un site où le serveur explorera périodiquement un autre site, afin de recueillir du contenu pour certaines entrées dans ma base de données. Mes questions sont les suivantes...

  1. Comment faire pour que le serveur exécute un crawl en temps voulu ?
  2. Pouvez-vous obtenir l'exécution de php ou quel langage utilisez-vous pour effectuer le crawl ?
  3. Existe-t-il de bonnes API pour faire cela ?
  4. Devrais-je envisager de construire le mien ? Si oui, des conseils sur la façon de commencer seraient les bienvenus.

Fondamentalement, le genre de chose que je veux faire, est que le serveur exécute un script (disons toutes les heures), qui trouve toutes les entrées dans la base de données qui n'ont pas encore été crawlées sur un autre site. Il prendra une certaine valeur de ces entrées, et les utilisera pour crawler un autre site... il pourrait demander une url comme celle-ci : www.anothersite.com/images?q=entryindb .

Ce que je veux qu'il fasse, c'est explorer le HTML, renvoyer un tableau et enregistrer les valeurs dans la base de données. Voici ce que je veux que le crawler recherche

Find all instances of 
<img> inside <a> inside <td> inside <tr> inside <tbody> inside <table> inside <div id='content'>
Return array of the img.src from all instances.

Une telle chose est-elle possible ? - Si oui, comment dois-je m'y prendre ? - Veuillez garder à l'esprit que la seule expérience que j'ai jusqu'à présent en matière de développement web (côté serveur) est le PHP.

UPDATE : Je vais utiliser un serveur basé sur linux, donc je suppose que le chron-scripting est la façon dont je devrais le faire ?

4voto

Shef Points 21595
  1. Vous pouvez utiliser cron
  2. Oui, vous pouvez exécuter un script PHP.
  3. Rien de tel qu'une API d'exploration complète (AFAIK), mais il existe des classes qui vous aideront à analyser et à parcourir les documents DOM.
  4. Vous pouvez mettre en place quelque chose en quelques minutes si vous suivez les étapes suivantes

1. Vous devez phpQuery pour vous faciliter la vie avec cette

Télécharger phpQuery-0.9.5.386-onefile.zip de aquí .

2. Votre fichier PHP devrait être quelque chose comme ceci

require_once 'phpQuery-onefile.php';
$html = file_get_contents('http://www.othersite.com');
phpQuery::newDocumentXHTML($html);

$elements = pq('#content table tbody tr td a img');
$images = array();
foreach($elements as $img){
    $images[] = pq($img)->attr('src');
}

El $images aura une liste de toutes les sources d'images.

3. Enregistrez le code ci-dessus dans un fichier, disons crawler.php

Ensuite, dans l'onglet cron, si vous voulez que le robot d'exploration s'exécute toutes les heures, vous devez le faire :

0 * * * * php /path/to/your/crawler.php

2voto

Jon Stirling Points 1748
  1. Vous pouvez utiliser cron en supposant que vous hébergez sous Linux.
  2. Oui, vous pouvez l'utiliser pour exécuter du PHP.
  3. Pas que je sache, mais je n'ai jamais regardé.
  4. C'est vous qui décidez. Consultez la documentation suivante qui, selon moi, pourrait vous être utile.

REMARQUE : vérifiez au préalable les CG des sites que vous souhaitez explorer pour savoir s'ils l'autorisent.

http://php.net/file_get_contents

http://php.net/curl

http://php.net/domdocument

2voto

chelmertz Points 8774

Vous pouvez récupérer le HTML avec cURL ( grattage d'écran ) et écrire l'analyseur HTML avec l'outil php DOMDocument . Si le HTML est désordonné, vous ne pouvez pas le lire directement avec DOMDocument mais vous pourriez le "laver" avec par exemple HTMLPurifier qui prend du HTML invalide et le recrache tout valide.

Pour démarrer le processus, rendez votre script php capable de s'exécuter via CLI (la ligne de commande, contrairement à un serveur web qui est bien sûr utilisé pour un navigateur).

Une fois que vous avez ce script, installez un cronjob (si vous avez un serveur Linux) pour exécuter votre script dans la période que vous voulez.

Recherchez les mots en gras sur Google.

0voto

Christian Mann Points 3920

J'utiliserais cron pour cela. Cependant, PHP n'est peut-être pas le meilleur choix, sauf si vous avez déjà écrit le script. Python et BelleSoupe pourrait être le plus approprié pour gratter les URLs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X