一尘不染

如何禁用scrapy中的缓存?

scrapy

我正在尝试在特定网站上抓取网页。该网页因我发送的不同Cookie的设置而有所不同scrapy.Request()

如果我一一请求到网页,它给我正确的结果,但是当我在for循环中发送这些cookie时,它给了我相同的结果。我认为scrapy正在为我创建缓存,并在第二个请求中从缓存中获取响应。这是我的代码:

def start_requests(self):
        meta = {'REDIRECT_ENABLED':True}
        productUrl = "http://xyz"
        cookies = [{'name': '', 'value': '=='},{'name': '', 'value': '=='}]
        for cook in cookies:

            header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36"}
            productResponse = scrapy.Request(productUrl,callback=self.parseResponse,method='GET',meta=meta,body=str(),cookies=[cook],encoding='utf-8',priority=0,dont_filter=True)
            yield productResponse


def parseResponse(self,response): 
     selector = Selector(response)
     print selector.xpath("xpaths here").extract()
     yield None

我希望print语句应为两个请求提供不同的结果。

如果不清楚,请在评论中提及。


阅读 1114

收藏
2020-04-10

共1个答案

一尘不染

缓存可以通过两种方式禁用

  1. 在setting.py文件中更改与缓存相关的设置中的值。通过保持HTTPCACHE_ENABLED = False
  2. 或者可以在运行时完成“ scrapy crawl crawl-name –set HTTPCACHE_ENABLED = False
2020-04-10