Извлеките конкретный HREF с помощью xpath или css

Недавно я взялся за один необычный элемент, который не так просто очистить. Не могли бы вы подсказать, как получить href, пожалуйста.

Я очищаю некоторые рестораны Tripadvisor с помощью python scrapy, и мне нужно получить ссылку Google Map (атрибут href) из раздела местоположения и контактов. Не могли бы вы подсказать, как Например, веб-страница (ссылка)

Код элемента:

<a data-encoded-url = "S0k3X2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVNjYWJlbGxzdHIuKzEwLTExJTJDKzE0MTA5K0JlcmxpbitHZXJtYW55QDUyLjQyODgxOCwxMy4xODI0MjFfeVBw" class = "_2wKz--mA _27M8V6YV" target = "_blank" href = "**https://maps.google.com/maps?saddr=&amp;daddr=Scabellstr.+10-11%[email protected],13.182421**"><span class = "_2saB_OSe">Scabellstr. 10-11, 14109 Berlin Germany</span><span class = "ui_icon external-link-no-box _2OpUzCuO"></span></a>

Я пробовал следующий XPATH, но каждый раз получал ответ None или не мог получить данные по атрибуту href, как будто он не существует.

response.xpath("//a[contains(@class, '_2wKz--mA _27M8V6YV')]").getall()

Выход:

['<a data-encoded-url = "Z3pLX2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVNjYWJlbGxzdHIuKzEwLTExJTJDKzE0MTA5K0JlcmxpbitHZXJtYW55QDUyLjQyODgxOCwxMy4xODI0MjFfMk1z" class = "_2wKz--mA _27M8V6YV" target = "_blank"><span class = "_2saB_OSe">Scabellstr. 10-11, 14109 Berlin Germany</span><span class = "ui_icon external-link-no-box _2OpUzCuO"></span></a>',

'Веб-сайт']

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
105
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы пытаетесь выполнить конкретный запрос XPath, чтобы получить ссылку типа "//a[contains(@class, 'foobar')]/@href" для получения определенного атрибута элемента.

Ответ принят как подходящий

Используйте уже полученный data-encoded-url и декодируйте его с помощью Base64. Пример:

>>> import base64
>>> base64.b64decode("Z3pLX2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVNjYWJlbGxzdHIuKzEwLTExJTJDKzE0MTA5K0JlcmxpbitHZXJtYW55QDUyLjQyODgxOCwxMy4xODI0MjFfMk1z").decode("utf-8")
'gzK_https://maps.google.com/maps?saddr=&daddr=Scabellstr.+10-11%[email protected],13.182421_2Ms'

Затем вы можете удалить префикс gzK_ и суффикс _2Ms, и у вас будет свой URL.

Другие вопросы по теме