Какой смысл "тела" в конструкторе класса scraper.http.HtmlResponse? - PullRequest
0 голосов
/ 14 декабря 2018

это может быть супер нубский вопрос ... простите меня, если это так .... Я читал, что каждый создает класс HtmlResponse следующим образом:

response = HtmlResponse(url = 'http://asite.com', body=html, encoding='utf-8')

Что делает body = html?Указывает ли это источник HTML?Зачем нужен исходный html, даже если указан URL?

Ответы [ 3 ]

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

Поскольку HTMLResponse не загружает страницу, связанную с данным url.HTMLResponse используется для анализа html (для запроса по xpath и css).Загрузка страницы происходит в другой части кода.Кроме того, с этим url, связанным с HtmlResponse объектом, вы можете легко получить доступ к этому атрибуту.

Вы можете проверить:

https://github.com/scrapy/scrapy/blob/1fd1702a11a56ecbe9851ba4f9d3c10797e262dd/scrapy/http/response/init.py

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

Чтобы дать контекст вашему вопросу, вы должны понимать, что Scrapy не является инструментом для прямых запросов.Scrapy - это платформа для сканирования веб-сайтов , которая работает как проект самостоятельно.

Я полагаю, вы думаете, что response = HtmlResponse(url = 'http://asite.com', ...) может быть способом "загрузки" информации с этого конкретного сайта,но это не правдаScrapy предназначен для работы определенным образом и в определенном порядке, указанном здесь .Запросы и ответы не предназначены для самостоятельного использования в Scrapy, так как он имеет свой собственный планировщик, в который вы сбрасываете Request объектов и получаете обратно Response объектов.

Объекты Response не предназначены длябыть созданным непосредственно (фактически я никогда не создавал единственного Response в моей жизни), поскольку они создаются планировщиком Scrapy как "ответ" ранее определенного Request.

Хейнг сказал, чтоВы, конечно, можете по-прежнему создавать экземпляр Response, как и любой другой class в Python, и на самом деле он полезен, но в основном для целей тестирования , но не более того, поскольку он является только "бесполезным"представление о том, что должно прийти из планировщика Scrapy.

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

Параметр body : Чтобы получить доступ к декодированному тексту как str (Unicode в Python 2), вы можете использовать response.text из подкласса Response с учетом кодировки, такого как TextResponse.

Для получения дополнительной информации: Запрос-ответ

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