Scrapy - 爬取 (200) 和引用:none
Scrapy - crawled (200) and referer : none
我正在尝试学习如何使用 scrapy 和 python 但我根本不是专家...离这里很远。
抓取此页面后我总是有一个空文件:product of c-discount 我不明白为什么...
这是我的代码:
import scrapy
from cdiscount_test.items import CdiscountTestItem
f = open('items.csv', 'w').close()
class CdiscountsellersspiderSpider(scrapy.Spider):
name = 'CDiscountSellersSpider'
allowed_domains = ['cdiscount.com']
start_urls = ['http://www.cdiscount.com/mpv-8732-SATENCO.html']
def parse(self, response):
items = CdiscountTestItem()
name = response.xpath('//div[@class="shtName"]/div[@class="shtOver"]/h1[@itemprop="name"]/text()').extract()
country = response.xpath('//div[@class="shtName"]/span[@class="shTopCExp"]/text()').extract()
items['name_seller'] = ''.join(name).strip()
items['country_seller'] = ''.join(country).strip()
pass
我在 cmd 中得到的结果 windows :
2017-06-20 18:01:50 [scrapy.core.engine] INFO: Spider opened
2017-06-20 18:01:50 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0
pages/min), scraped 0 items (at 0 items/min)
2017-06-20 18:01:50 [scrapy.extensions.telnet] DEBUG: Telnet console
listening on 127.0.0.1:6023
2017-06-20 18:01:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET
http://www.cdiscount.com/robots.txt> (referer: None)
2017-06-20 18:01:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET
http://www.cdiscount.com/mpv-8732-SATENCO.html> (referer: None)
2017-06-20 18:01:51 [scrapy.core.engine] INFO: Closing spider (finished)
有人帮我吗?
非常感谢!!!
这里的主要问题是您没有将 parse
方法中的项目传回 Scrapy 引擎。您在 parse
中的最后一个命令是 pass
,因此您只需丢弃该项目。相反,您需要使用 yield item
.
将项目从蜘蛛传递到 Scrapy 引擎以进行进一步处理
同一问题的一种可能情况是网站内容是动态生成的。您可以通过访问网站并点击查看页面源来检查。
在这种情况下,您可能需要将 splash 与 scrapy 一起使用。
我正在尝试学习如何使用 scrapy 和 python 但我根本不是专家...离这里很远。 抓取此页面后我总是有一个空文件:product of c-discount 我不明白为什么...
这是我的代码:
import scrapy
from cdiscount_test.items import CdiscountTestItem
f = open('items.csv', 'w').close()
class CdiscountsellersspiderSpider(scrapy.Spider):
name = 'CDiscountSellersSpider'
allowed_domains = ['cdiscount.com']
start_urls = ['http://www.cdiscount.com/mpv-8732-SATENCO.html']
def parse(self, response):
items = CdiscountTestItem()
name = response.xpath('//div[@class="shtName"]/div[@class="shtOver"]/h1[@itemprop="name"]/text()').extract()
country = response.xpath('//div[@class="shtName"]/span[@class="shTopCExp"]/text()').extract()
items['name_seller'] = ''.join(name).strip()
items['country_seller'] = ''.join(country).strip()
pass
我在 cmd 中得到的结果 windows :
2017-06-20 18:01:50 [scrapy.core.engine] INFO: Spider opened
2017-06-20 18:01:50 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0
pages/min), scraped 0 items (at 0 items/min)
2017-06-20 18:01:50 [scrapy.extensions.telnet] DEBUG: Telnet console
listening on 127.0.0.1:6023
2017-06-20 18:01:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET
http://www.cdiscount.com/robots.txt> (referer: None)
2017-06-20 18:01:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET
http://www.cdiscount.com/mpv-8732-SATENCO.html> (referer: None)
2017-06-20 18:01:51 [scrapy.core.engine] INFO: Closing spider (finished)
有人帮我吗?
非常感谢!!!
这里的主要问题是您没有将 parse
方法中的项目传回 Scrapy 引擎。您在 parse
中的最后一个命令是 pass
,因此您只需丢弃该项目。相反,您需要使用 yield item
.
同一问题的一种可能情况是网站内容是动态生成的。您可以通过访问网站并点击查看页面源来检查。 在这种情况下,您可能需要将 splash 与 scrapy 一起使用。