Скачивание HTML с другого ресурса без использования scrapy - PullRequest
0 голосов
/ 11 ноября 2019

Я создал следующий файл в каталоге spiders проекта scrapy. Проблема, с которой я сталкиваюсь, заключается в том, что функции внутри middlewares.py, а именно process_request и process_response, не вызываются. В чем может быть причина этого?

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'https://liv.ai/'
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        print(response.url,"...", response.status)
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

Я хочу загрузить HTML с веб-страницы, используя другой процесс, а не копирование. По этой причине я хочу прослушать промежуточное программное обеспечение и обратиться к другому источнику, который может загрузить HTML и отправить ответ.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Проблема, с которой я сталкиваюсь, заключается в том, что функции из middlewares.py, а именно process_request и process_response, не вызываются. В чем может быть причина этого?

Поскольку вы не упоминаете об этом явно, возможно, вы забыли включить промежуточное ПО . Определение его в middlewares.py недостаточно (или необходимо, промежуточное программное обеспечение может быть определено во многих местах).

0 голосов
/ 11 ноября 2019

Целевой веб-сайт использует js / ajax для создания красивого макета, который вы видите в своем браузере, тогда как ваш сканер видит что-то еще ;Ваш подход кажется нормальным для обычных веб-сайтов, однако с этим конкретным веб-сайтом вы никогда не получите весь html-код без использования браузера без заголовка - попробуйте selenium или splash , чтобы просмотреть обработанный html.

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