网址: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 timedef get_data(ur):url=r'https://beijing.8684.cn/x_'+urda=requests.get(url)da.encoding='utf-8'da=da.textreturn dadef extract_info(da):Class = re.findall('<h1 class="title">(.*)<a href="/line1', da, re.S)category=re.findall('<a href="/line1" class="category">(.*)</a></h1>',da) descr=re.findall('<ul class="bus-desc"><li>(.*)</li><li>票价',da)price_descr=re.findall('票价信息:(.*)</li><li>公交公司',da)print(Class[0],category[0],descr[0],price_descr[0])stas=re.findall('</div><div class="bus-lzlist mb15"><ol><li><a href="/(.*)</a></li></ol><!-- </ol> --></div><!----><div class="bus-excerpt mb15">',da)dd=str(stas).split('</a></li><li><a href="/')pat=re.compile(r'[\u4e00-\u9fa5]+')t=pat.findall(str(dd))sts=[]for i in range(0,len(t)):sts.append(t[i])
#    return sts# trip=re.findall('<div class="trip">(.*)</div></div><div class="other fr"><div class="total"',da)def get_lat_lon(address):url= 'http://api.map.baidu.com/geocoder?output=json&key=f247cdb592eb43ebac6ccd27f796e2d2&address='+str(address)response = requests.get(url)answer = response.json()lon = float(answer['result']['location']['lng'])lat = float(answer['result']['location']['lat'])
#    print(address,lat,lon)return lat,londef get_bus_num_url(i):url=r'https://beijing.8684.cn/list'+str(i)da=requests.get(url)da.encoding='utf-8'da=da.textdd=re.findall('<a href="/x_(.*)" title="北京(.*)路公交车路线">',da)a=str(dd).split('</a><a href="/x')for add in a[:-1]:ur=re.findall('[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]+',add)[0]route=re.findall('title=(.*)>',str(add))
#        print(route[0],ur)url_dic[route[0]]=ururl_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='北京市'+addlat,lon=get_lat_lon('北京市'+address)print(address,lat,lon)result=result.append({'站点':add,'经度':lat,'纬度':lon},ignore_index=True)except:pass

效果图

笔者对爬虫涉猎不多,代码能力也很粗糙,欢迎大佬批评指正。读者可将这些信息保存只表中,有了经纬度信息,就可利用arcgis软件进行数字化展示。

python 爬虫小案例 8684网站爬取北京公交路线站点信息。相关推荐

  1. Python爬虫实战案例一:爬取猫眼电影

    背景 笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信息,所以爬取猫眼电影数据进行补充.关于爬虫的 ...

  2. Python爬虫实战案例:一键爬取,多种网页模板任你选!

    文章目录 一.网页查看 二.网页爬取数据分析 三.代码分析 四.图片辅助分析 五.运行结果 CSDN独家福利降临!!! 更多博主开源爬虫教程目录索引 一.网页查看 进入网页模板 多页爬取 二.网页爬取 ...

  3. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  4. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  5. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  6. Python爬虫笔记(3)- 爬取丁香园留言

    Python爬虫笔记(3)- 爬取丁香园留言 爬取丁香园留言:主要用到了模拟登录 爬取丁香园留言:主要用到了模拟登录 import requests, json, re, random,time fr ...

  7. python爬虫之股票数据定向爬取

    python爬虫之股票数据定向爬取 功能描述 目标:获取上交所和深交所所有股票的名称和交易的信息 输出:保存到文件中 技术路线:requests-bs4-re 前期分析 选取原则:股票的信息静态存在H ...

  8. python爬虫初学实战——免登录爬取easyicon里的vip图标(2)

    python爬虫初学实战-免登录爬取easyicon里的vip图标(2) 实验日期:2020-08-09 tips:没看过前面(1)的可以康康,指路 -> 爬取easyicon里的png图标 成 ...

  9. python爬虫 - 起点女生榜单爬取 - 1

    python爬虫 - 起点女生榜单爬取 ​ 最近一直在追庆余年,顺带瞄了一眼小说,真真是精彩(虽然因为范闲多妻的设定接受不了就放弃了). ​ 说来说去,还是钟爱女频的修仙小说,所以就想爬一下起点女生网 ...

  10. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

最新文章

  1. SpannableString 设置一段文字中部分字体颜色
  2. 安全领域应该关注的网站
  3. linux fedora安装flameshot火焰截图
  4. 面试题:Fibonacci数列
  5. java ssm项目_JAVA项目:逝去的SSM
  6. docker 搭建mysql 连接不上_docker搭建MySQL主从集群
  7. Effective C++:条款37:绝不又一次定义继承而来的缺省參数值
  8. Facebook 为安卓用户推出精简版 Messenger Lite,率先面向发展中国家
  9. ARM与中国的深度合作引发的关注
  10. 机器学习基石(一):什么是机器学习
  11. JavaScript随机生成信用卡卡号的方法
  12. 小程序发布成功后搜索不到怎么办?
  13. 小程序入门说明以及资料整理
  14. 在Android的 设置-显示 中增加控制屏幕旋转方向的选项
  15. Kubernetes:如何解决从k8s.gcr.io拉取镜像失败问题
  16. 【自动化运维新手村】Flask-ORM关联查询
  17. (IS 19)wav2vec: Unsupervised Pre-training for Speech Recognition
  18. 御坂坂的C++学习之路(1)
  19. 开发小程序的正确方式
  20. eclipse平台的手机程序开发步骤整理

热门文章

  1. 但行好事 莫问前程(四月)
  2. 笔记本闪屏是怎么回事呢?笔记本闪屏三个原因介绍
  3. 使用Beep()函数发出指定音高 (一)
  4. python 新闻摘要_每日新闻摘要:随着机器取代工人,黄金一日即将推出
  5. ROS创建KDL tree
  6. 设定Applocker和解决问题
  7. java 行政区划 三级_Java学习-056-Jsoup爬虫获取中国所有的三级行政区划数据
  8. 坡度如何用计算机计算,坡度计算公式图解,教你正确的计算方法
  9. Hive系列(三)实操
  10. Mac看电视直播(通过MUMU安卓模拟器+自定义直播软件apk)