Как я могу начать новый запрос в Scrapy Crawler? - PullRequest
0 голосов
/ 26 ноября 2018

Я снимаю с веб-сайта, который будет давать каждому сеансу запроса sid, после получения sid я выполняю дополнительный поисковый запрос с этим sid и очищаю результаты.

Я хочучтобы изменить sid каждый раз, когда я заканчиваю очистку всех результатов одного запроса, я попытался очистить куки, но он не работает.

Однако, если я перезапущу свой сканер, он будеткаждый раз получаю разные 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

1 Ответ

0 голосов
/ 26 ноября 2018

Настройка COOKIES_ENABLED = Ложь может достичь этого, но есть ли другой способ, кроме глобальных настроек?

...