Hallo Ich habe diesen Scrapy-Code unten (ich habe viele if-Schleifen gelöscht und vereinfacht es leicht verständlich). Das Problem ist dieses scrapy, scabs nur die erste Seite der Website. Ich habe herausgefunden, dass hte scrapy.request die neue URL nicht bekommt, und im Element ['url'] wird immer nur die Basis-URL angehängt und daher heruntergeladen.Scrapy.request bekommt nicht die neue URL
import scrapy
from collections import Counter
from scrapy.selector import Selector
from Mycode.items import *
class ExampleSpider(scrapy.Spider):
name = "full_sites"
def __init__(self, site=None, *args, **kwargs):
super(ExampleSpider, self).__init__(*args, **kwargs)
self.start_urls = [site]
self.base_url = site
self._site = site
self.allowed_domains = [self._site]
def parse(self, response):
for i in response.xpath('//a/@href').extract():
print '================'
print 'i entered=', i
url = self.base_url + i
print url, 'go to scrapy'
yield scrapy.Request(url= url, callback=self.parse)
item = FullSitesItem()
item['url'] = response.url
print 'item=', item['url']
yield item
bekomme ich diese Ausgänge auf meinem Monitor:
================
i entered= /service
http://webscraper.io/service go to scrapy
item= http://webscraper.io
================
i entered= /sitemap-specialist
http://webscraper.io/sitemap-specialist go to scrapy
item= http://webscraper.io
================
i entered= /screenshots
http://webscraper.io/screenshots go to scrapy
item= http://webscraper.io
================
so unabhängig von der URL zu scrapy.Requests geben, das Element [ 'url'] ist das gleiche! Wie kann ich dieses Problem beheben?
dank
danke für die Antwort. Was meinst du mit "neuer Methode"? Du meinst eine andere Funktion? – nakisa
Ja, erstellen Sie eine andere Analysefunktion. –
Danke für die Hilfe. – nakisa