You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从peakbagger网页提取经纬度及批量爬取优化方法

单页经纬度提取方法

你当前的代码已经拿到了页面所有td标签,针对经纬度的固定格式,可以用正则匹配快速定位提取,优化后的代码如下:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

url = 'https://www.peakbagger.com/peak.aspx?pid=10882'
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

# 匹配经纬度的正则规则,直接适配你提到的格式片段
lat_lng_reg = re.compile(r'(\d+\.\d+),\s*(\d+\.\d+)')
for td in soup.select("td"):
    match_res = lat_lng_reg.search(td.get_text())
    if match_res:
        lat = float(match_res.group(1))
        lng = float(match_res.group(2))
        print(f"纬度:{lat},经度:{lng}")
        break
批量提取列表页所有山峰经纬度的方法

不需要逐个手动处理页面,你可以先爬取列表页拿到所有山峰的详情页链接,再循环批量爬取每个页面的经纬度,完整代码如下:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pandas as pd
import time

# 基础配置
list_url = 'https://www.peakbagger.com/list.aspx?lid=5651'
peak_base_url = 'https://www.peakbagger.com/peak.aspx?pid='
lat_lng_reg = re.compile(r'(\d+\.\d+),\s*(\d+\.\d+)')
result = []

# 第一步:爬列表页获取所有山峰的pid和名称
list_html = urlopen(list_url)
list_soup = BeautifulSoup(list_html, 'html.parser')
for a_tag in list_soup.select('a[href^="peak.aspx?pid="]'):
    pid = a_tag['href'].split('pid=')[-1]
    result.append({
        'pid': pid,
        'peak_name': a_tag.get_text(strip=True)
    })

# 第二步:循环批量爬取每个山峰的经纬度
for item in result:
    try:
        # 加延时避免请求太频繁被限制
        time.sleep(0.5)
        peak_html = urlopen(f"{peak_base_url}{item['pid']}")
        peak_soup = BeautifulSoup(peak_html, 'html.parser')
        for td in peak_soup.select('td'):
            match_res = lat_lng_reg.search(td.get_text())
            if match_res:
                item['lat'] = float(match_res.group(1))
                item['lng'] = float(match_res.group(2))
                break
    except Exception as e:
        print(f"pid为{item['pid']}的山峰数据爬取失败:{str(e)}")
        continue

# 结果可直接导出为csv文件
df = pd.DataFrame(result)
print(df)
# df.to_csv('山峰经纬度数据.csv', index=False, encoding='utf-8-sig')
  • 批量爬取时可以根据网站的响应速度调整延时时间,避免触发反爬限制。

内容的提问来源于stack exchange,提问作者Annie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:00:02