使用BeautifulSoup爬取地点GPS信息仅获取纬度缺经度问题求助
问题解决思路与修正方案
你无法提取经度的核心原因是代码中a = li.find_all("li")[0:1]做了切片限制,仅提取每个列表组的第一个<li>元素,而经度和纬度是同一个列表组下相邻的两个<li>节点,自然无法抓取到经度数据。
可行的优化方向:
- 优先定位到存储GPS坐标的专属列表组,无需遍历所有列表组,避免抓取到无关的统计数据
- 移除
<li>元素的切片限制,遍历该列表组下所有相关的<li>节点 - 优化文本提取逻辑,适配页面的节点结构,避免遗漏数据
修正后的可正常提取经纬度的代码如下:
from bs4 import BeautifulSoup import requests import pandas as pd tickers = ['wies_Blizyn'] for ticker in tickers: page = requests.get('https://www.polskawliczbach.pl/' + ticker) soup = BeautifulSoup(page.content, 'lxml') dic = {"name": [], "value": []} # 直接定位到包含GPS坐标的列表组 gps_ul = soup.select_one("ul.list-group:has(li span#szerokosc-geograficzna)") if gps_ul: # 遍历所有li节点,取消切片限制 for li in gps_ul.find_all("li"): try: name = li.find(text=True, recursive=False).strip() value = li.find("span").text.replace(" ", ",") print(name, "\t", value) dic["name"].append(name) dic["value"].append(value) except Exception as e: continue df = pd.DataFrame(dic)
内容的提问来源于stack exchange,提问作者Jaroslaw
相关产品推荐
相关产品推荐

