网址:https://beijing.8684.cn/ 通过点击1,2,3等发现网址为https://beijing.8684.cn/list1,2,3。 点击某一路,如10路,网址为https://beijing.8684.cn/x_8234e473。。采用quote(wd, encoding=“utf-8”)这样,还是不一样,笔者比较菜,应该是编码的问题,有谁知道欢迎留言。 本博客的思路就成了,首先获取1-9开头的公交的所有网址,而后通过解析获取,某路的站点信息,描述信息等。站点的经纬度信息通过百度API获取。
import requests
from urllib.parse import quote
import re
import pandas as pd
#x_5085a6b6
import time
def get_data(ur):
url=r'https://beijing.8684.cn/x_'+ur
da=requests.get(url)
da.encoding='utf-8'
da=da.text
return da
def extract_info(da):
Class = re.findall('(.*)',da)
dd=str(stas).split('',str(add))
# print(route[0],ur)
url_dic[route[0]]=ur
url_dic={}
for i in range(5,10):
# print(i)
get_bus_num_url(i)
result= pd.DataFrame(columns = ['站点','经度','纬度'])
keys=url_dic.keys()
for key in keys:
try:
da=get_data(url_dic[key])
sts=extract_info(da)
for add in sts:
# print(address)
address='北京市'+add
lat,lon=get_lat_lon('北京市'+address)
print(address,lat,lon)
result=result.append({'站点':add,'经度':lat,'纬度':lon},ignore_index=True)
except:
pass
效果图 笔者对爬虫涉猎不多,代码能力也很粗糙,欢迎大佬批评指正。读者可将这些信息保存只表中,有了经纬度信息,就可利用arcgis软件进行数字化展示。
|