我正在从一个网站上抓取,它将为每个请求会话提供一个sid,在获得sid之后,我将使用这个sid执行进一步的搜索查询,并刮取结果。
每次完成单个查询的所有结果后,我都想更改sid,我尝试过清除cookies,但它不起作用。
但是,如果我重新启动我的爬虫,每次都会得到不同的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发布于 2018-11-26 08:18:38
设置COOKIES_ENABLED = False可以实现这一点,但是除了全局设置之外,还有其他方法吗?
https://stackoverflow.com/questions/53476958
复制相似问题