m0_68306032 2022-12-24 18:48 采纳率: 80%
浏览 45
已结题

Python爬虫获取经纬度

之前没学过爬虫,课题需要爬取上海市充电桩分布数据,根据别人的代码无法输出具体的经纬度。请问各位错在哪里?

import requests
import re
from pyquery import PyQuery as pq
from selenium import webdriver

browser = webdriver.Chrome(r'。。。')
kv = {'user-agent':'Mozilla/5.0'}
url = "http://admin.bjev520.com/jsp/beiqi/pcmap/do/pcMap.jsp?"
latter = "name=上海"
browser.get(url+latter)
browser.switch_to.frame('left')   # iframe标签的name属性,最重要的一步
doc = pq(browser.page_source)
items = doc.find('.news-l .news-ul li a').items()
name = []
pos = []
urls = []
for item in items:
    urls.append("http://admin.bjev520.com" + item.attr('href'))
    name.append(item.find('p').text())
    pos.append(item.find('span').text())
import json
from urllib.request import urlopen, quote
import requests
def getlnglat(address):
    url = 'http://api.map.baidu.com/geocoding/v3/'
    output = 'json'
    ak = 'Iam9F3Gs6X03afWINMasrAdqCowF1cbx' # 百度地图ak,具体申请自行百度
    address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
    uri = url + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak + '&callback=showLocation'
    r = requests.get(uri)
    tx = r.text
    lng = re.findall(r'"lng":(\d+.\d+)', tx)
    lat = re.findall(r'"lat":(\d+.\d+)', tx)
    if lat:
        return lat[0], lng[0]   # 纬度 latitude   ,   经度 longitude  ,
    else:
        return (0, 0)
    print(lat[0],lng[0])

  • 写回答

1条回答 默认 最新

  • |__WhoAmI__| 2022-12-24 19:12
    关注

    从你提供的代码来看,首先爬取的页面是从上海的充电桩的信息,然后用 pyquery 来解析页面,得到了一个包含了所有充电桩信息的 items 列表。在循环中,解析了每个充电桩的名称和位置,并将它们分别放入 name 和 pos 列表。

    但是我看不出你在代码中使用了 getlnglat 这个函数,也就是说,你没有调用百度地图 API 来获取经纬度。你需要将这个函数调用加入到循环中,在循环内调用 getlnglat 函数,将 pos 列表中的位置作为参数传入,并将获取到的经纬度数据存入一个新的列表。

    这样就可以使用爬取的数据并通过百度地图 API 获取经纬度了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 修改了问题 12月24日
  • 创建了问题 12月24日

悬赏问题

  • ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
  • ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥50 用logisim设计16位单时钟周期cpu
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据
  • ¥15 Multisim红外倒车雷达仿真中距离问题
  • ¥15 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中