Недавно я взялся за один необычный элемент, который не так просто очистить. Не могли бы вы подсказать, как получить 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=&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>',
'Веб-сайт']
Вы пытаетесь выполнить конкретный запрос 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.