En utilisant CrawlSpider de Scrapy, Page de liste d'articles-> Page de présentation des articles individuels-> Page de détails des articles individuels, et explorez le site où vous pouvez suivre le lien Supposons que vous souhaitiez gratter et enregistrer les informations sur la page de détail.
La correspondance entre la page et l'URL ressemble à celle ci-dessous.
page | URL |
---|---|
Liste des articles | example.com/list |
Aperçu de l'article | example.com/item/(ID)/ |
Détails de l'article | example.com/item/(ID)/details |
Dans le cas d'un site avec une telle structure, si vous pouvez ajouter / détails à la fin du lien vers la page de résumé extraite de la page de liste et l'utiliser pour demander directement la page de détails, vous pouvez aller sur le site de l'autre partie. Le nombre de requêtes a été divisé par deux, et le temps nécessaire à l'exécution de ce programme a également été réduit, donc deux oiseaux avec une pierre! Voici donc un exemple de mise en œuvre.
Dans l'argument * valeur_processus * de LinkExtractor, décrivez le processus de traitement de l'URL dans une expression lambda.
example.py
class ExampleSpider(CrawlSpider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://example.com/list'] #Page de liste d'articles
rules = [
Rule(LinkExtractor(
#/item/Extraire les URL contenant
allow=r'.*/item/.*',
#Vers l'URL extraite'details/'Ajouter
process_value= lambda x:x + 'details/'
),callback='parse_details'),
]
#
def parse_details(self, response):
#(réduction)
c'est tout!