Im folgenden Code parst Funktion ausführt etwa 32-mal (foor Schleife 32 href Found) in der sameway jeder sublink sollte die Daten (32 einzelne URLs parse_next Funktion) .Aber gehen und kratzen parse_next Funktion nur einmal ausgeführt wird (einfache Fahrt)/nicht genannt (und Ausgabe cSV-Datei wird empty.can mir jemand helfen, wo ich Fehler gemacht habescraping: Abschaben zweite Ebene der URL
import scrapy
import logging
logger = logging.getLogger('mycustomlogger')
from ScrapyTestProject.items import ScrapytestprojectItem
class QuotesSpider(scrapy.Spider):
name = "nestedurl"
allowed_domains = ['www.grohe.in']
start_urls = [
'https://www.grohe.com/in/7780/bathroom/bathroom-faucets/essence/',
def parse(self, response):
logger.info("Parse function called on %s", response.url)
for divs in response.css('div.viewport div.workspace div.float-box'):
item = {'producturl': divs.css('a::attr(href)').extract_first(),
'imageurl': divs.css('a img::attr(src)').extract_first(),
'description' : divs.css('a div.text::text').extract() + divs.css('a span.nowrap::text').extract()}
next_page = response.urljoin(item['producturl'])
#logger.info("This is an information %s", next_page)
yield scrapy.Request(next_page, callback=self.parse_next, meta={'item': item})
#yield item
def parse_next(self, response):
item = response.meta['item']
logger.info("Parse function called on2 %s", response.url)
item['headline'] = response.css('div#content a.headline::text').extract()
return item
#response.css('div#product-variants a::attr(href)').extract()
Überprüft Ihre for-Schleife und sollte ordnungsgemäß funktionieren. Daher sollte in Ihren Protokollen ein Fehler auftreten. Haben Sie versucht, die Spinne mit einem DEBUG-Protokolllevel auszuführen? Dies sollte Ihnen einen Hinweis geben, wo was schief geht. – Casper