【本文更新于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爬虫】获取全国客运列车车次及起讫站点位置信息相关推荐

  1. 使用Python爬虫获取上交所和深交所所有股票的名称和交易信息

    使用Python爬虫获取上交所和深交所所有股票的名称和交易信息 功能描述 目标 获取上交所和深交所所有股票的名称和交易信息 输出 保存到文件中 技术路线 requests-bs4-re 候选数据网站的 ...

  2. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

  3. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

    Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...

  4. 获取clientheight为0_用10行python代码获取全国城市交通生活圈

    今天在网上冲浪看到一个很花哨的数据,全国各城市主要商圈从早上6点到晚上10点的20min,30min,45min,60min,90min生活圈轮廓. 1 获取思路 按下F12 按下F12,点击淮海路可 ...

  5. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

  6. 域名带后缀_[Python 爬虫]获取顶级域名及对应的 WHOIS Server 及 whoisservers.txt 下载...

    使用 Python 爬虫获取顶级域名及对应的 WHOIS Server 并保存可用于 WhoisCL.exe 的文件 whois-servers.txt. 环境: Windows 10 Python ...

  7. python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  8. python爬虫获取下一页url_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  9. 突破次元壁障,Python爬虫获取二次元女友

    突破次元壁障,Python爬虫获取二次元女友 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生友环节 ...

  10. Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)

    Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3) 1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问 ...

最新文章

  1. 为什么是string.join(list)而不是list.join(string)?
  2. keil 器件是空的,Keil的Device为空,不能选择器件
  3. LeetCode Permutation Sequence(求排列中的第k个排列是什么)
  4. 做红颜知己就要恪守界限
  5. 关于鸿蒙工艺调查分析报告,800万芯片订单已下,5nm工艺+鸿蒙系统,华为做了双重准备...
  6. android 通知垃圾回收,Android中垃圾回收日志信息
  7. Java poi读取,写入Excel2003
  8. 房产管理信息系统 oracle,房地产企业项目信息管理系统|案场管理系统
  9. ImageLoader
  10. 单片机c语言中void key(void),单片机C语言编程
  11. tcpip详解卷一第3章(1)
  12. java redis教程视频_2020年Java视频教程-Redis全集
  13. AB测试平台的工程实现
  14. 计算机桌面移动如何解决,【电脑小知识】桌面布局被锁定,图标不能随意移动了怎么办?...
  15. mysql max over_max() over()
  16. 如何系统地学习linux?
  17. sql cast 和convert用法详解
  18. android studio(as)找不到手机
  19. python numpy库 一些统计量计算
  20. Excel 2010 VBA 入门 095 数据处理之用数组实现分列

热门文章

  1. 满足AUTOSAR基础软件要求的硬件安全模块(HSM)加密运算
  2. surfacepro4黑苹果触屏_surface pro 4 黑苹果 (surface book 1适用)
  3. Java项目中常见的文件夹名称
  4. 最简单的视频编码器:基于libx265(编码YUV为H.265)
  5. 计算机显示不出来验证码,如何解决网页图片红叉显示不出来验证码图片没显示的电脑故障...
  6. 蓝星微商城源码+搭建教程源码
  7. 如何使用低代码开发平台实现出入库管理
  8. 证件阅读设备一般可以识别哪些证件
  9. 扫描证件识别应用最为广泛
  10. pthread_sigmask