【问题标题】:Get geolocation from webpage by scraping using Selenium通过使用 Selenium 抓取从网页获取地理位置
【发布时间】:2017-10-30 11:08:04
【问题描述】:

我尝试抓取这个page

目标是收集经纬度。但是,我看到 HTML 内容在“地址”情况下提交后没有改变,我不知道这是否是我的“空列表”的问题。

我的脚本:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://www.coordonnees-gps.fr/"

chrome_path = r"C:\Users\jbourbon\Desktop\chromedriver_win32 (1)\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.maximize_window()
driver.get(url)

r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

g_data = soup.findAll("div", {"class": "col-md-9"})

latitude = []
longitude = []

for item in g_data:
    latitude.append(item.contents[0].findAll("input", {"id": "latitude"}))
    longitude.append(item.contents[0].findAll("input", {"id": "longitude"}))

print(latitude)
print(longitude)

在这里,我的list拥有什么

泰:)

【问题讨论】:

  • 你为什么用Selenium标签标记你的问题?您是否对Selenium 进行了同样的尝试?如果是这样,也添加此代码

标签: python-3.x selenium web-scraping beautifulsoup selenium-chromedriver


【解决方案1】:

你所做的并没有错,问题是当你使用seleniumrequests打开链接时,地理定位不是立即可用的,它在几秒钟后可用aaf9ec0.js添加它是动态的,所以请求无论如何都不会工作),似乎input#latitude 也没有给出值,你可以从div#info_window 获取它。

我对代码做了一些修改,它应该为您提供lat, long,对我有用:

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import re

url = "https://www.coordonnees-gps.fr/"

driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
time.sleep(2) # wait for geo location to become ready

# no need to fetch it again using requests, we've already done it using selenium above
#r = requests.get(url)
soup = BeautifulSoup(driver.page_source, "html.parser")

g_data = soup.findAll("div", {"id": "info_window"})[0]
#extract latitude, longitutde
latitude, longitude = re.findall(r'Latitude :</strong> ([\.\d]*) \| <strong>Longitude :</strong> ([\.\d]*)<br/>', str(g_data))[0]
print(latitude)
print(longitude)

输出

25.594095
85.137565

【讨论】:

    【解决方案2】:

    我最好的猜测是您必须为 chromedriver 实例启用 GeoLocation。请参阅此answer,了解如何执行此操作。

    【讨论】:

      猜你喜欢
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 2019-09-03
      • 2021-02-04
      • 2018-09-21
      • 2020-04-21
      • 2019-04-06
      相关资源
      最近更新 更多