我正在从一个网站进行抓取,该网站将为每个请求会话提供一个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
答案 0 :(得分:0)
设置COOKIES_ENABLED = False可以实现此目的,但是除了全局设置之外还有其他方法吗?