Веб-сканер неправильно печатает страницы

#scrapy #web-crawler

#scrapy #веб-сканер

Вопрос:

Доброе утро!

Я разработал очень простой spider с помощью Scrapy, просто чтобы привыкнуть к FormRequest. Я пытаюсь отправить запрос на эту страницу:https://www.caramigo.eu / что должно привести меня к странице, подобной этой: https://www.caramigo.eu/be/fr/recherche?address=Belgique, Liègeamp;date_debut=16-03-2019amp;date_fin=17-03-2019 . Проблема в том, что мой spider неправильно запрашивает страницу (изображения автомобилей и информация вообще не отображаются), и поэтому я не могу собрать с нее какие-либо данные. Вот мой паук:

 import scrapy


class CarSpider(scrapy.Spider):
    name = "caramigo"

    def start_requests(self):
        urls = [
            'https://www.caramigo.eu/'
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.search_line)

    def search_line(self, response):
        return scrapy.FormRequest.from_response(
            response,
            formdata={'address': 'Belgique, Liège', 'date_debut': '16-03-2019', 'date_fin': '17-03-2019'},
            callback=self.parse
        )

    def parse(self, response):
        filename = 'caramigo.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)
  

Извините, если синтаксис неправильный, я довольно новичок в программировании.

Заранее благодарю вас!

Комментарии:

1. Этот веб-сайт использует Javascript для отображения интерфейса. Scrapy не может самостоятельно отображать какой-либо Javascript. Вам нужно либо использовать Scrapy Splash для рендеринга Javascript, либо альтернативно очистить их API (например caramigo.eu/services/car ).

2. Большое спасибо за ваш ответ! Теперь мне интересно, как мне получить API для каждого запроса, который я сделаю? Я имею в виду, что на домашней странице я должен запустить запрос на местоположение и дату. После этого мне нужен API. У вас есть какой-нибудь намек на то, как я могу это реализовать?

3. Вам необходимо использовать инструменты разработчика вашего браузера для проверки этих вызовов API по мере их выполнения. Например, отправьте форму, а затем посмотрите, какие значения отправлены. Вот краткое руководство из документации Scrapy: docs.scrapy.org/en/latest/topics /…

4. Еще раз большое спасибо!