最近,我处理了一个不寻常的元素,它不是很容易刮掉的。你能建议一下如何检索href吗?
我正在用python scrapy抓取Tripadvisor的一些餐厅,需要从位置和联系人部分检索谷歌地图的链接(href属性)。你能推荐一下如何制作网页(例如link)吗?
元素的代码:
<a data-encoded-url="S0k3X2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVNjYWJlbGxzdHIuKzEwLTExJTJDKzE0MTA5K0JlcmxpbitHZXJtYW55QDUyLjQyODgxOCwxMy4xODI0MjFfeVBw" class="_2wKz--mA _27M8V6YV" target="_blank" href="**https://maps.google.com/maps?saddr=&daddr=Scabellstr.+10-11%2C+14109+Berlin+Germany@52.428818,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,但每次都没有得到响应,或者无法获得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>',‘网站’]
发布于 2020-12-25 10:15:53
使用已经获得的data-encoded-url,并使用Base64对其进行解码。示例:
>>> import base64
>>> base64.b64decode("Z3pLX2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVNjYWJlbGxzdHIuKzEwLTExJTJDKzE0MTA5K0JlcmxpbitHZXJtYW55QDUyLjQyODgxOCwxMy4xODI0MjFfMk1z").decode("utf-8")
'gzK_https://maps.google.com/maps?saddr=&daddr=Scabellstr.+10-11%2C+14109+Berlin+Germany@52.428818,13.182421_2Ms'然后,您可以删除gzK_前缀和_2Ms后缀,您将拥有您的URL。
发布于 2020-12-25 10:08:46
您可以尝试使用特定的XPath查询来获取href,如"//a[contains(@class, 'foobar')]/@href"来检索元素的特定属性。
https://stackoverflow.com/questions/65444623
复制相似问题