如何在Scrapy crawler中启动一个全新的请求



我正在从一个网站上抓取,该网站将为每个请求会话提供一个sid,在获得sid后,我用这个sid执行进一步的搜索查询并抓取结果。

每次我完成单个查询的所有结果的抓取后,我都想更改sid,我尝试过清除cookie,但它不起作用。

然而,如果我重新启动我的爬网程序,它每次都会得到不同的sid,我只是不知道如何在不重新启动爬网程序的情况下获得新的sid

我想知道是否还有其他东西可以让服务器知道两个请求来自同一个连接。

谢谢!

这是我当前的代码:

class MySpider(scrapy.Spider):
name = 'my_spider'
allowed_domains = ['xxx.com']
start_urls = ['http://xxx/']
sid_pattern = r'SID=(w+)&'
SID = None
query_list = ['aaa', 'bbb', 'ccc']
i = 0
def parse(self, response):
if self.i >= len(self.query_list):
return
pattern = re.compile(self.sid_pattern)
result = re.search(pattern, response.url)
if result is not None:
self.SID = result.group(1)
else:
exit(-1)
search_url = 'http://xxxx/AdvancedSearch.do'            
query = self.query_list[i]
self.i += 1
query_form = {
'aaa':'bbb'
}
yield FormRequest(adv_search_url, method='POST', formdata=query_form, dont_filter=True,
callback=self.parse_result_entry)
yield Request(self.start_urls[0], cookies={}, callback=self.parse,dont_filter=True)
def parse_result(self, response):
do something

设置COOKIES_ENABLED=False可以实现这一点,但除了全局设置之外,还有其他方法吗?

最新更新