使用scrapy爬取58同城的数据,发现xpath路径正确,第一次运行确实可以输出数据,但是第二次运行后却返回了一个空列表,代码如下
import scrapy
class Tongcheng58Spider(scrapy.Spider):
name = "tongcheng58"
allowed_domains = ["cn.58.com"]
start_urls = ["https://cn.58.com/jiadian/?PGTID=0d100000-008d-26ef-fe66-3e870a34ef93&ClickID=4"]
def parse(self, response):
print("===============================================================")
content=response.xpath('//div/a/h1')
print(content.extract())
网上说是【allowed_domains】需要补全,所以尝试了把【start_urls】的内容复制给了【allowed_domains】,但是经过尝试并没有用。猜测或许是scrapy的版本之间的差别。
又因为第一次运行时能够输出内容,因此排除了xpath路径问题。
最终尝试了发现是头信息里的cookie没有设置,scrapy默认用了它内部设置的头信息。于是对setting里面的内容进行修改就可以了 :
1.打开settings.py文件
2.取消注释COOKIES_ENABLE = False
3.设置headers,添加cookie,以及UA,如果有referer的话也添加进去
3.执行scrapy crawl tongcheng58结果如下图所示,成功输出内容