2016-09-19 2 views
1

Angesichts eines Pools von Start-URLs möchte ich in der parse_item() - Funktion die Ursprungs-URL identifizieren.Scrapy - Wie man die Start-URL verfolgt

Soweit ich betroffen bin, kriechen die Scrapy-Spider aus dem anfänglichen Pool von Start-URLs, aber beim Parsen gibt es keine Spur davon, welche dieser URLs die ursprüngliche war. Wie wäre es möglich, den Ausgangspunkt zu verfolgen?

Antwort

0

Wenn Sie eine Parsing-URL innerhalb der Spinne benötigen, nur response.url verwenden:

def parse_item(self, response): 
    print response.url 

aber falls Sie es außerhalb Spinne muss ich von folgenden Möglichkeiten denken kann:

  1. Verwenden scrapy core api
  2. Sie können auch scrapy von einem externen python-Modul mit OS-Befehl aufrufen (die offenbar nicht zu empfehlen):

in scrapycaller.py

from subprocess import call 
urls = 'url1,url2' 
cmd = 'scrapy crawl myspider -a myurls={}'.format(urls) 
call(cmd, shell=True) 

Innen myspider:

class mySpider(scrapy.Spider): 
    def __init__(self, myurls=''):    
     self.start_urls = myurls.split(",") 
Verwandte Themen