[Scrapy] Corriger / traiter l'URL extraite

Exemple d'hypothèse

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.

la mise en oeuvre

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!

Recommended Posts

[Scrapy] Corriger / traiter l'URL extraite
Tuez le processus avec sudo kill -9