Scrapy - Shell сканирует страницу без проблем, но селекторы не работают - PullRequest
0 голосов
/ 19 июня 2019

У меня есть этот стартовый URL для сканирования.

https://autocarro.com.br/auto-busca/carros?AutoBusca=1&qc=&qt=&q=&ai=&af=&pi=&pf=&com=&cam=&cor=&por=&est=&cid=#1

Когда я отправляю запрос из scrapy shell, он сканируется без проблем. Я вижу, что полная страница отображается при использовании view(response). Это HTML-код и отображаемый веб-сайт.

website

Однако, когда я пытаюсь использовать селекторы для получения тегов, они не работают. Как будто нет всего тела таблицы HTML.

response.css('tbody').getall() получает пустое тело таблицы или нет нужных тегов a.

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

1 Ответ

1 голос
/ 20 июня 2019

Вам необходимо проверить исходный HTML-код (обычно Ctrl+U в браузере) для получения исходных данных.Для вашего URL вы обнаружите, что целевая таблица загружается из кода JavaScript, начиная с var COLLECTION = [.Вы можете проанализировать эту часть с кодом ниже:

import json

def parse(self, response):
    json_collection = response.xpath('//script[contains(., "var COLLECTION = [")]').re_first(r'var COLLECTION = (\[.+?\]);')
    data = json.loads(json_collection) # now you have everything you need here
    for element in data:
        mark = element["mar"]
        version = element["ver"]
        ........
...