Паук не анализирует данные, как только он попадает на страницу - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь очистить сайт Amazon для продуктов, после достижения нормального процесса очистки я попытался добавить некоторую «сложность» в программу.

Моя идея состояла в том, чтобы из .txt получить определенныеключевые слова.С этими ключевыми словами я использовал панель поиска для поиска продуктов, которые соответствуют им, и просматривал данные.Это сработало просто отлично.

Проблема в том, что в зависимости от ключевого слова, например, «Ноутбук» и «Обувь», анализатор должен работать по-разному, потому что обувь имеет разные размеры, цвета и т. Д., Поэтому данные, которые мне нужно почиститьот «обувного» продукта отличается от данных, которые мне нужны от «портативного» продукта.И вот где я нахожусь.

С некоторой помощью людей с этого сайта я смог вызвать другой парсер в зависимости от того, какое слово получил паук из .txt.Код выглядит примерно так:

def start_requests(self):

    txtfile = open('productosABuscar.txt', 'r')

    keywords = txtfile.readlines()

    txtfile.close()

    for keyword in keywords:

        yield Request(self.search_url.format(keyword))

def parse_item(self,response):
    #Here i get the keyword for comparisson later
    category = re.sub('Back to search results for |"','', response.xpath('normalize-space(//span[contains(@class, "a-list-item")]//a/text())').extract_first()) 
    #Here i get the product url for the next parser
    productURL = response.request.url

    if category == 'Laptop':

        yield response.follow(productUrl, callback = self.parse_laptop)

def parse_laptop(self, response):

    laptop_item = LaptopItem()

    #Parsing things

    yield laptop_item

Это должно работать нормально, но, когда я запускаю паука из консоли Anaconda, данные не удаляются.Странно то, что паук фактически получает доступ к каждому элементу «Ноутбука» на странице amazon, но не копирует с него данные.

В консоли я вижу каждую ссылку, к которой обращается паук, с помощью оператораНапример,

2018-12-27 10:02:36 [scrapy.core.engine] ОТЛАДКА: Crawled (200) https://www.amazon.com/Acer-Aspire-i3-8130U-Memory-E5-576-392H/dp/B079TGL2BZ/ref=sr_1_3/ref=sr_1_acs_bss_3_4?ie=UTF8&qid=1545915651&sr=8-3-acs&keywords=Laptop> (реферер: https://www.amazon.com/s?field-keywords=Laptop)

Есть что-тоне так с расположением парсера или это более глубокий вопрос?

1 Ответ

0 голосов
/ 27 декабря 2018

это идет в функцию parse_laptop?и если это пойдет, что вы получите?пусто {} или ничего?или любая ошибка?

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