Scrapy не удалось получить значение атрибута с помощью Xpath

#python #xpath #scrapy

#python #xpath #scrapy

Вопрос:

Я пытаюсь получить @src атрибут с помощью XPath, но когда я запустил свой scrapy, он возвращает пустой массив. Кто-нибудь, пожалуйста, объясните мне, где я ошибся?

Фрагмент HTML-кода с атрибутом

XPath

 //div[@class='BuC9jaLeEj']//child::div/img[@class='P2llUzsDMi']/@src
  

Используя браузер, я могу найти путь к имени тега, но когда я запускаю свой Scrapy-бот, он возвращает пустой массив.

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

1. Просто предположение: возможно, ваш анализатор натыкается на alt атрибут, которому не хватает его значения, и уже не может создать (полезный) DOM из вашего HTML.

2. Почти наверняка вы смотрите на то, что видит Chrome , а не на источник страницы, который видит Scrapy. Scrapy не будет оценивать JS, поэтому, если это BuC9jaLeEj не отображается в источнике страницы, вы никогда не сможете его сопоставить

3. @mdaniel вы правы в этом, но как мне выполнить синтаксический анализ в html после оценки JS?

4. Обычно, если что-то загружается динамически, вам повезло, потому что это означает, что страница выполняет вызов API для извлечения только данных, «очистка» не требуется. Некоторые страницы сами помещают данные в HTML, но большинство просто использует URL, который возвращает JSON, и это то, что вы вызываете из Scapy. Без дополнительной информации о вашей странице трудно дать более действенный совет, кроме «это не новая проблема, в Интернете есть много документации и примеров»

5. docs.scrapy.org/en/latest/topics/dynamic-content.html

Ответ №1:

Вы также можете найти это полезным:

Затем вы можете выбрать изображение из словаря

https://pypi.org/project/chompjs/