#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. Без дополнительной информации о вашей странице трудно дать более действенный совет, кроме «это не новая проблема, в Интернете есть много документации и примеров»
Ответ №1:
Вы также можете найти это полезным:
Затем вы можете выбрать изображение из словаря