今天学习Scrapy框架时,调用下面的方法发送请求时返回的居然是一个空列表。
import scrapy
class Test01Spider(scrapy.Spider):
name = "test01"
allowed_domains = ["https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6/6699?fromModule=lemma_search-box"]
start_urls = ["https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6/6699?fromModule=lemma_search-box"]
def parse(self, response):
pass
get_text = response.xpath("/html/body/div[3]/div[2]/div/div[1]/div[4]/div[3]/text()").extract()
print(get_text)
在我尝试很多遍,并且检查发现xpath没错的情况下还是返回空列表。
后面上网搜了很多解决方案,发现是头信息里的cookie没有设置,Scrapy默认用了它内部设置的头信息。于是对setting里面的内容进行修改就可以了 :
1、取消注释COOKIES_ENABLE = False:
2、取消注释DEFAULT_REQUEST_HEADERS并且增加Cookie信息:
这样再请求就可以获取到相应的信息了: