gpt4 book ai didi

python - 如何通过网络抓取获取 Airbnb 列表的纬度和经度值

转载 作者:行者123 更新时间:2023-12-01 19:33:11 27 4
gpt4 key购买 nike

我正在尝试获取出现在 Airbnb 中的列表的纬度和经度,我认为该信息位于嵌入式谷歌地图中。当我试图通过使用 lxml 库或 Beautiful Soup 复制完整的 Xpath 来抓取该对象时,我无法得到它。例如列表 https://www.airbnb.co.uk/rooms/15307317 , 在带有标签 div img 和属性 data-veloute = "map/GoogleMapStatic"的对象中具有 map 中心的经度和纬度信息,我尝试使用以 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')

是否有可能获得这些信息?

最佳答案

正如 RafalS 所建议的,您应该使用 selenium或其他浏览器脚本库。

这是我想出的。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from bs4 import BeautifulSoup
import urllib.parse as urlparse
from urllib.parse import parse_qs

def main():
chrome_options = Options()
chrome_options.add_argument("--headless") #if you don't want the GUI to pop up
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.airbnb.co.uk/rooms/15307317')
time.sleep(2)
soup = BeautifulSoup(driver.page_source, "lxml")
url = (soup.find("img", {"data-veloute":"map/GoogleMapStatic"})).attrs['src']
parsed = urlparse.urlparse(url)
print(parse_qs(parsed.query)['center'])

if __name__ == '__main__':
main()

输出:

['53.8147,-1.52538']

关于python - 如何通过网络抓取获取 Airbnb 列表的纬度和经度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com