Also habe ich vor kurzem begonnen, Scrapy für ein Projekt auszuprobieren, und ich war sehr verwirrt mit den verschiedenen älteren Syntaxen (SgmlLinkExtractor etc.), aber irgendwie gelang es mir, den lesbaren Code zusammenzusetzen, der für mich Sinn ergab. Dies geschieht jedoch nicht auf jeder Seite der Website, sondern nur auf der Seite start_urls und erzeugt nicht die Ausgabedatei. Kann mir bitte jemand erklären, was mir fehlt?Scrapy Basic Crawler funktioniert nicht?
import scrapy
import csv
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class RLSpider(CrawlSpider):
name = "RL"
allowed_domains='ralphlauren.com/product/'
start_urls=[
'http://www.ralphlauren.com/'
]
rules = (
Rule(LinkExtractor(),callback="parse_item",follow=True),
)
def parse_item(self, response):
name = response.xpath('//h1/text()').extract_first()
price = response.xpath('//span[@class="reg-price"]/span/text()').extract_first()
image=response.xpath('//input[@name="enh_0"]/@value').extract_first()
print("Rules=",rules)
tup=(name,price,image)
csvF=open('data.csv','w')
csvWrite = csv.writer(csvF)
csvWrite.writerow(tup)
return []
def parse(self,response):
pass
Ich versuche, Daten von der Website zu extrahieren und sie in eine CSV-Datei von allen Seiten schreiben unter/Produkt kommende/
Hier sind die Protokolle:
2016-12-07 19:46:49 [scrapy] INFO: Scrapy 1.2.2 started (bot: P35Crawler)
2016-12-07 19:46:49 [scrapy] INFO: Overridden settings: {'BOT_NAME': 'P35Crawler
', 'NEWSPIDER_MODULE': 'P35Crawler.spiders', 'SPIDER_MODULES': ['P35Crawler.spid
ers']}
2016-12-07 19:46:49 [scrapy] INFO: Enabled extensions:
['scrapy.extensions.logstats.LogStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.corestats.CoreStats']
2016-12-07 19:46:50 [scrapy] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.chunked.ChunkedTransferMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2016-12-07 19:46:50 [scrapy] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
2016-12-07 19:46:50 [scrapy] INFO: Enabled item pipelines:
[]
2016-12-07 19:46:50 [scrapy] INFO: Spider opened
2016-12-07 19:46:50 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 i
tems (at 0 items/min)
2016-12-07 19:46:50 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-12-07 19:46:51 [scrapy] DEBUG: Redirecting (302) to <GET http://www.ralphla
uren.com/home/index.jsp?ab=Geo_iIN_rUS_dUS> from <GET http://www.ralphlauren.com
/>
2016-12-07 19:46:51 [scrapy] DEBUG: Crawled (200) <GET http://www.ralphlauren.co
m/home/index.jsp?ab=Geo_iIN_rUS_dUS> (referer: None)
2016-12-07 19:46:51 [scrapy] INFO: Closing spider (finished)
2016-12-07 19:46:51 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 497,
'downloader/request_count': 2,
'downloader/request_method_count/GET': 2,
'downloader/response_bytes': 20766,
'downloader/response_count': 2,
'downloader/response_status_count/200': 1,
'downloader/response_status_count/302': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2016, 12, 7, 14, 16, 51, 973406),
'log_count/DEBUG': 3,
'log_count/INFO': 7,
'response_received_count': 1,
'scheduler/dequeued': 2,
'scheduler/dequeued/memory': 2,
'scheduler/enqueued': 2,
'scheduler/enqueued/memory': 2,
'start_time': datetime.datetime(2016, 12, 7, 14, 16, 50, 287464)}
2016-12-07 19:46:51 [scrapy] INFO: Spider closed (finished)
Überprüfen Sie Ihre Protokolle, ich nehme an, dass URLs wegen 'allowed_domains' gefiltert werden, entfernen Sie das. – eLRuLL
@eLRuLL Hallo, danke für die Antwort. Hat das Log geschrieben. Ich habe versucht, outwarded_domains auskommentieren, aber immer noch nicht funktioniert. –