【Python爬虫】获取全国客运列车车次及起讫站点位置信息
【本文更新于2020-7-24】
利用Python,通过对列车车次查询网站的内容进行爬虫爬取,获得全国客运列车车次及其起讫站点位置信息(经纬度)。值得注意的是,这些地点的坐标基于高德坐标系,因此在可视化的过程中,推荐使用高德开放平台的“数据可视化”功能。
下面给出参考代码。
注意:
(1)在使用高德开放平台提供的各项功能之前,需申请密钥(key)。这一加密字符串的功能,类似百度平台的“ak”。
(2)在使用Python爬虫前,需安装requests、bs4等库。
(3)高德开放平台提供的各项功能的使用方法,可参考官方提供的使用说明。
#获取铁路列车信息
import xlwt
import requests as rq
from bs4 import BeautifulSoup as bs
import time
from retry import retryrootpath = 'E:/PythonChris/Train_Schedule/'#所有火车车次网站
site_of_train = 'http://www.jt2345.com/huoche/checi'@retry(tries=2, delay=2)
def geturl(url):headers = {'User-Agent':'Chrome/72.0'}r = rq.get(url,headers = headers,timeout = 5)r.raise_for_statusr.encoding = 'GB2312'txt = r.textreturn txt#收集所有车次信息
@retry(tries=2, delay=2)
def gettrains(txt):trains = []soup = bs(txt,'html.parser')for l in soup.find_all('a'):trains.append(str(l.string))trains = trains[5:]return trainstrains = gettrains(geturl(site_of_train))
num_of_train = len(trains)
#print(len(trains))despath = rootpath + 'Train_Schedule_Detail.xls'
wb = xlwt.Workbook(encoding = 'UTF-8')
wt = wb.add_sheet('Detail',cell_overwrite_ok=True)
now_time = time.strftime('Updated: %Y-%m-%d %H:%M', time.localtime())
now_time = now_time + ',共收集到{}列次数据。'.format(num_of_train)
wt.write(0,0,label = now_time)
fir = ['车次','列车类型','始发站','终点站','发车时间','到站时间','全程耗时','数据更新时间','起点经纬度','终点经纬度']
for i in range(10):wt.write(1,i,label = fir[i])#为具体车次的信息进行函数构建
@retry(tries=2, delay=2)
def specialsoup(txt):soup = bs(txt,'html.parser')infor_one = []for p in soup.find_all('td'):infor_one.append(str(p.string))tem = [infor_one[5],infor_one[8],infor_one[10],infor_one[18],infor_one[12],infor_one[14],infor_one[16],infor_one[22]]infor_one = temreturn infor_one#获取经纬度
key = '***' #需要根据自己的key替换
@retry(tries=2, delay=2)
def getpoint(location):global keyheaders = {'User-Agent':'Chrome/72.0'}url = 'https://restapi.amap.com/v3/geocode/geo?address=' + location + ' 火车站&output=XML&key=' + keyrx = rq.get(url,headers = headers)rx.raise_for_statusrx.encoding = 'UTF-8'tx = rx.textso = bs(tx,'html.parser')loc = str(so.find('location').string)return loc#收集所有车次的具体信息
@retry(tries=2, delay=2)
def getinfor(trains):count = 0global site_of_trainglobal num_of_trainglobal wtglobal wb#infor_all = []for t in range(len(trains)):try:url = site_of_train +'/'+ str(trains[t]) +'.htm'txt = geturl(url)infor_one = specialsoup(txt)count += 1percent = '{:.3f}'.format(count/num_of_train*100)for k in range(8):wt.write(t+2,k,label = infor_one[k])wt.write(t+2,8,label = getpoint(infor_one[2]))wt.write(t+2,9,label = getpoint(infor_one[3]))print('收集工作已完成{}%。{}/{}'.format(percent,count,num_of_train))except:continuewb.save(despath)#infor_all.append(infor_one)#return infor_allgetinfor(trains)
``
【Python爬虫】获取全国客运列车车次及起讫站点位置信息相关推荐
- 使用Python爬虫获取上交所和深交所所有股票的名称和交易信息
使用Python爬虫获取上交所和深交所所有股票的名称和交易信息 功能描述 目标 获取上交所和深交所所有股票的名称和交易信息 输出 保存到文件中 技术路线 requests-bs4-re 候选数据网站的 ...
- 编写python爬虫 获取中华英才网全网工资数据
做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...
- Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!
Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...
- 获取clientheight为0_用10行python代码获取全国城市交通生活圈
今天在网上冲浪看到一个很花哨的数据,全国各城市主要商圈从早上6点到晚上10点的20min,30min,45min,60min,90min生活圈轮廓. 1 获取思路 按下F12 按下F12,点击淮海路可 ...
- python Chrome + selenium自动化测试与python爬虫获取网页数据
一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...
- 域名带后缀_[Python 爬虫]获取顶级域名及对应的 WHOIS Server 及 whoisservers.txt 下载...
使用 Python 爬虫获取顶级域名及对应的 WHOIS Server 并保存可用于 WhoisCL.exe 的文件 whois-servers.txt. 环境: Windows 10 Python ...
- python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
- python爬虫获取下一页url_Python爬虫获取页面所有URL链接过程详解
如何获取一个页面内所有URL链接?在python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
- 突破次元壁障,Python爬虫获取二次元女友
突破次元壁障,Python爬虫获取二次元女友 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生友环节 ...
- Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)
Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3) 1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问 ...
最新文章
- 为什么是string.join(list)而不是list.join(string)?
- keil 器件是空的,Keil的Device为空,不能选择器件
- LeetCode Permutation Sequence(求排列中的第k个排列是什么)
- 做红颜知己就要恪守界限
- 关于鸿蒙工艺调查分析报告,800万芯片订单已下,5nm工艺+鸿蒙系统,华为做了双重准备...
- android 通知垃圾回收,Android中垃圾回收日志信息
- Java poi读取,写入Excel2003
- 房产管理信息系统 oracle,房地产企业项目信息管理系统|案场管理系统
- ImageLoader
- 单片机c语言中void key(void),单片机C语言编程
- tcpip详解卷一第3章(1)
- java redis教程视频_2020年Java视频教程-Redis全集
- AB测试平台的工程实现
- 计算机桌面移动如何解决,【电脑小知识】桌面布局被锁定,图标不能随意移动了怎么办?...
- mysql max over_max() over()
- 如何系统地学习linux?
- sql cast 和convert用法详解
- android studio(as)找不到手机
- python numpy库 一些统计量计算
- Excel 2010 VBA 入门 095 数据处理之用数组实现分列
热门文章
- 满足AUTOSAR基础软件要求的硬件安全模块(HSM)加密运算
- surfacepro4黑苹果触屏_surface pro 4 黑苹果 (surface book 1适用)
- Java项目中常见的文件夹名称
- 最简单的视频编码器:基于libx265(编码YUV为H.265)
- 计算机显示不出来验证码,如何解决网页图片红叉显示不出来验证码图片没显示的电脑故障...
- 蓝星微商城源码+搭建教程源码
- 如何使用低代码开发平台实现出入库管理
- 证件阅读设备一般可以识别哪些证件
- 扫描证件识别应用最为广泛
- pthread_sigmask