我试图获取Airbnb中出现的列表的纬度和经度,我认为这些信息是嵌入在谷歌地图中的。当我试图通过使用lxml库或Beautiful Soup复制完整的Xpath来刮取该对象时,我无法得到它。例如,清单https://www.airbnb.co.uk/rooms/15307317中的经度和纬度信息位于带有标记div img和属性data veloute=“map/GoogleMapStatic”的对象的地图中心,我试图使用以https://maps.googleapis.com/maps/api/staticmap?center=开头的链接,但我无法用代码识别正确的对象
url = 'https://www.airbnb.co.uk/rooms/15307317'
response = http.request('GET', url)
soup = BeautifulSoup(response.data, 'lxml')
soup.find("div", {"data-veloute":"map/GoogleMapStatic"})
soup.find("img", {"data-veloute":"map/GoogleMapStatic"})
或者使用下一个代码:
resp = requests.get(url, headers=headers)
tree = html.fromstring(resp.content)
tree.xpath('/html/body/div[5]/div/main/div/section/div/div[2]/div/div[2]/div[1]/div/div[10]/div/div/div/div/div/section/div[2]/div[2]/div[2]/img')
有没有可能得到这些信息
将
response
保存到文件中,然后查看页面的真实外观。大多数内容都是动态加载的。您需要一个浏览器来处理javascript动态内容加载selenium或pyppeteer是最流行的浏览器脚本库
正如RafalS所建议的,您应该使用selenium或其他浏览器脚本库
这是我想到的
输出:
它们存在于脚本标记中。您可以从响应文本中正则表达式,而无需借助浏览器的开销
相关问题 更多 >
编程相关推荐