Как эффективно очистить страницу результатов от разбитого на страницы списка ссылок, возвращаемых функцией поиска на сайте - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь почистить страницы интернет-магазина с помощью функции поиска. Например, когда на URL-адрес www.example.com/search отправляется запрос, страница возвращает разбитый на страницы список ссылок на все продукты веб-сайта. Каждая страница продукта более или менее одинакова и, как таковая, относительно проста в очистке. Проблема в том, что возвращено около 40 000 ссылок на страницы продуктов, и я хочу очистить их все, сначала загрузив базу данных, а затем запланировав ежедневный запуск скребка для добавления любых новых продуктов. Я хочу знать, каков был бы эффективный подход к эффективной очистке этих 40000 страниц с помощью скрапа. Прямо сейчас мой код выглядит следующим образом:

ExampleSpider(scrapy.Spider):
    next_page = 1
    last_page = 100
    start_urls = ['example.com/search?page={}'.format(next_page)]

    parse(self, response):
        yield scrapy.Request(response.url, callback=self.follow_product_links)
        yield scrapy.Request(response.url, callback=self.follow_pagination_links)

    follow_product_links(self,response):
        for href in selector_that_gets_all_the_product_links:
            yield response.follow(href, callback=self.parse_product)

    parse_product(self,response):
        # Scrape the product page and yield an item
        # details are not relevant to my problem

    follow_pagination_links(self,response):
        self.next_page += 1
        if self.next_page < self.last_page:
            url = 'example.com/search?page={}'.format(self.next_page)
            scrapy.Request(url, callback=self.parse)

Это не исполняемый код, но он должен дать вам представление о том, что я пытаюсь сделать. Я знаю, что Scrapy асинхронный, что, безусловно, должно помочь, но есть ли какие-нибудь лучшие методы, которые я мог бы использовать? Кроме того, я надеялся, что веб-сайт предоставит публичный API для запросов к своей базе данных, но, к сожалению, они этого не делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...