[PYTHON] [Scrapy] Korrigieren / verarbeiten Sie die extrahierte URL

Annahme Beispiel

Verwenden von Crawl Spider von Scrapy, Artikellistenseite-> Einzelartikelübersichtsseite-> Einzelartikeldetailseite und crawlen Sie die Site, auf der Sie dem Link folgen können. Angenommen, Sie möchten die Informationen auf der Detailseite kratzen und speichern.

Die Entsprechung zwischen der Seite und der URL sieht wie folgt aus.

Seite URL
Artikelliste example.com/list
Artikelübersicht example.com/item/(ID)/
Artikeldetails example.com/item/(ID)/details

Wenn Sie bei einer Site mit einer solchen Struktur am Ende des Links zu der aus der Listenseite extrahierten Zusammenfassungsseite / details hinzufügen und damit die Detailseite direkt anfordern können, können Sie zur Site der anderen Partei gehen. Die Anzahl der Anfragen wurde halbiert und die Zeit für die Ausführung dieses Programms wurde ebenfalls reduziert, also zwei Fliegen mit einer Klappe! Das Folgende ist also ein Implementierungsbeispiel.

Implementierung

Beschreiben Sie im Argument * process_value * von LinkExtractor den Prozess der Verarbeitung der URL in einem Lambda-Ausdruck.

example.py


class ExampleSpider(CrawlSpider):
    name = 'example'
    allowed_domains = ['example.com']
    start_urls = ['http://example.com/list'] #Artikellistenseite

    rules = [
            Rule(LinkExtractor(
                #/item/Extrahieren Sie URLs mit
                allow=r'.*/item/.*',
                #Zur extrahierten URL'details/'Hinzufügen
                process_value= lambda x:x + 'details/' 
                ),callback='parse_details'),
    ]
#

    def parse_details(self, response):
        #(Kürzung)

das ist alles!

Recommended Posts

[Scrapy] Korrigieren / verarbeiten Sie die extrahierte URL
Töte den Prozess mit sudo kill -9