公交信息爬取01

今天学习到一个公交信息爬取技术,以下为详细步骤(以高德地图为例):
准备工作
1.获取高德开放平台API权限
网站:https://lbs.amap.com/
注册,进入控制台-应用管理-我的应用-创建新应用-添加key,选择web端JS API。完成创建后会得到一行key代码,复制备用。
2.将获得的key替换掉以下url中“key=**”的内容
url = ‘https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=8bdd8fdfbc3d4147c6d2a4c94cef3d4a&output=json&city=南京&offset=1&keywords=88路&platform=JS
编程阶段
1.导入库

import requests
import json
import pandas as pd
from lxml import etree
import time
url = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=8bdd8fdfbc3d4147c6d2a4c94cef3d4a&output=json&city=南京&offset=1&keywords=88路&platform=JS'
r = requests.get(url).text
rt = json.loads(r)
rt['buslines'][0]['name'] #获得公交线路的名称

运行结果:
输出

dt = {}
dt['line_name'] = rt['buslines'][0]['name'] 
dt['polyname'] = rt['buslines'][0]['polyline'] 
dt['total_price'] = rt['buslines'][0]['total_price'] 

st_name = []
st_coords = []
for st in rt['buslines'][0]['busstops']:
    st_name.append(st['name'])
    st_coords.append(st['location'])
    
dt['station_name'] = st_name
dt['station_coords'] = st_coords

print(dt)
dm = pd.DataFrame([dt])
dm

运行结果:
shuchu
2.编写函数

def get_dt(city,line):
    url = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=8bdd8fdfbc3d4147c6d2a4c94cef3d4a&output=json&city={}&offset=1&keywords={}&platform=JS'.format(city,line)
    r = requests.get(url).text
    rt = json.loads(r)
    try:
        if rt['buslines']:
            print('data available..')
            if len(rt['buslines']) == 0:  #有名称没数据
                print('no data in list..')
            else:
                dt = {}
                dt['line_name'] = rt['buslines'][0]['name'] 
                dt['polyname'] = rt['buslines'][0]['polyline'] 
                dt['total_price'] = rt['buslines'][0]['total_price'] 

                st_name = []
                st_coords = []
                for st in rt['buslines'][0]['busstops']:
                    st_name.append(st['name'])
                    st_coords.append(st['location'])

                dt['station_name'] = st_name
                dt['station_coords'] = st_coords
                dm = pd.DataFrame([dt])
                print(dm)
        else:
            pass
    except:
        print('error..try it again..')
        time.sleep(2)
        get_dt(city,line)

==========================================================================
测试结果1:
在这里插入图片描述
测试结果2:
在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
爬取北京公交路线信息可以使用XPath插件和目标网址https://beijing.8684.cn/。以下是爬取北京公交路线信息的步骤: 1. 安装XPath插件:首先,您需要在谷歌浏览器中安装XPath插件。您可以在谷歌浏览器的应用商店中搜索XPath插件,并按照提示进行安装。 2. 打开目标网址:在谷歌浏览器中打开目标网址https://beijing.8684.cn/。 3. 使用XPath定位元素:使用XPath插件可以帮助您定位网页中的元素。您可以使用XPath语法来选择您需要的公交路线信息的元素。 4. 提取公交路线信息:使用XPath插件提取您选择的公交路线信息的元素。您可以使用XPath的提取函数,如text()、@属性名等来提取元素的文本内容或属性值。 5. 解析和保存数据:将提取到的公交路线信息进行解析和保存。您可以使用Python的相关库,如requests、BeautifulSoup等来发送HTTP请求、解析HTML页面和保存数据。 以下是一个示例代码,演示如何使用XPath插件和Python来爬取北京公交路线信息: ```python import requests from lxml import etree # 发送HTTP请求获取网页内容 url = 'https://beijing.8684.cn/' response = requests.get(url) html = response.text # 使用XPath定位元素并提取公交路线信息 tree = etree.HTML(html) bus_lines = tree.xpath('//div[@class="bus_kt_r1"]/a/text()') # 打印公交路线信息 for bus_line in bus_lines: print(bus_line) # 保存公交路线信息到文件 with open('bus_lines.txt', 'w') as f: for bus_line in bus_lines: f.write(bus_line + '\n') ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值