Je cherchais un robot d'exploration simple et fonctionnel (également connu sous le nom d'araignée) et je n'ai pas pu en trouver un. Quelqu'un pourrait-il m'aider avec ce problème? Je voudrais qu'il obtienne simplement tous les liens d'une URL spécifiée ainsi que tous les liens de chacune des URL qu'il a analysées.

-3
HittmanA 9 mars 2016 à 06:18

3 réponses

Meilleure réponse

Je n'ai jamais essayé de créer un webcrawler auparavant. Cependant, j'imagine que cela ne devrait pas être trop compliqué. Je vais vous donner quelques ressources que vous pouvez utiliser.

Je ne connais aucun module qui récupérera simplement tous les liens pour vous, vous devrez donc probablement passer par le processus vous-même.

Tout d'abord, récupérez le code HTML de votre lien avec urllib2. Ensuite, analysez le code HTML et recherchez les liens avec BeautifulSoup. Il y a même une section sur la page qui décrit comment obtenir tous les liens d'une page Web.

C'est vraiment tout le code "difficile". Vous pouvez ensuite ajouter tous les liens que vous avez obtenus à une liste, parcourir chaque lien, répéter le même processus que ci-dessus, puis ajouter à nouveau les liens résultants à la liste et répéter récursivement ce processus aussi longtemps que vous le souhaitez. Cela devrait faire un robot d'exploration de base pour vous.

0
Rohan 9 mars 2016 à 03:42

Vous pouvez l'utiliser comme un robot d'indexation Web, mais je ne sais pas si cela fonctionnera ou non, car cela me donne des erreurs, mais vous pourriez avoir un autre chemin python installé

import requests
from bs4 import BeautifulSoup


    def trade_spider(max_pages):
    page = 1
    while page <= max_pages:
    url = "https://buckysroom.org/trade/search.php?page=" + str(page)
    source_code = requests.get(url)
    # just get the code, no headers or anything
    plain_text = source_code.text
    # BeautifulSoup objects can be sorted through easy
    soup = BeautifulSoup(plain_text)
    for link in soup.findAll('a', {'class': 'item-name'}):
        href = "https://buckysroom.org" + link.get('href')
        title = link.string  # just the text, not the HTML
        print(href)
        print(title)
        # get_single_item_data(href)
    page += 1


def get_single_item_data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)
# if you want to gather information from that page
for item_name in soup.findAll('div', {'class': 'i-name'}):
    print(item_name.string)
 # if you want to gather links for a web crawler
 for link in soup.findAll('a'):
    href = "https://buckysroom.org" + link.get('href')
    print(href)


trade_spider(1)
0
degorybryant 22 mai 2016 à 07:23

Vous pouvez utiliser le module scrapy.

Alternativement, vous pouvez écrire vos propres robots, en utilisant une combinaison d'un module pour récupérer des données (c'est-à-dire des requêtes, urllib2 ou sélénium) et un analyseur HTML (BeautifulSoup ou analyseur intégré de sélénium).

0
Boa 9 mars 2016 à 03:39