Сложность в очистке данных с использованием скрапа - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь очистить данные с помощью скрапа из https://www.ta.com/portfolio/business-services, однако ответ равен NULL. Я пытаюсь разобрать href в div.tiles js -portfolio-тайлах, используя код response.css("div.tiles.js-portfolio-tiles a::attr(href)").extract() Я думаю, что это как-то связано с ::before, который появляется перед этим, но, возможно, нет. Как мне go извлечь это? веб-сайт HTML

1 Ответ

0 голосов
/ 17 января 2020

Элементы, которые вы хотите получить, загружаются вашим браузером с помощью javascript. По умолчанию scrapy не может загружать элементы, используя javascript, поскольку он не является браузером, он просто извлекает необработанный HTML.

Оболочка Scrapy - бесценный инструмент для проверки того, что доступно в ответе, который scrapy получает.

Этот набор команд откроет ответ в вашем веб-браузере по умолчанию:

$ scrapy shell
>>> fetch("https://www.ta.com/portfolio/business-services")
>>> view (response)

Как вы можете видеть, плитки js -портфолио не видны, так как их нет был загружен.

Я посмотрел на AJAX запросы в сетевой панели инструментов разработчика, и оказалось, что запрашиваемая вами информация может быть доступна в запросе XHR. Если это не так, вам нужно будет использовать дополнительное программное обеспечение для загрузки javascript, а именно scrapy spla sh или селен, я бы посоветовал сначала изучить запрос AJAX (XHR), поскольку это будет намного быстрее и проще .

См. Этот вопрос для получения дополнительной информации об использовании инструментов разработчика вашего браузера для проверки AJAX запросов.

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