python实现爬取12306所有站点及其编码信息(附源代码)!

一、思路

1、打开12306.cn
2、ctrl + shift + i(开发者人员工具)
在这里插入图片描述
得到站点信息链接:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9028或者https://www.12306.cn/index/script/core/common/station_name_v10037.js;
3、看一下这个链接里面有什么?
在这里插入图片描述
虽然乱码?但不必担心,我们得到了我们需要的东西,python会解决这些问题!!!
接下来,需要爬取这个页面所有的站点名称(station_name)和站点编码(station_code),很明显,这只需要用到requests库和re库即可完成。

二、代码(复制运行即可)

import re
import json
import requests
import pandas as pd
from pprint import pprint
#JS,这个用浏览器打开会呈现一堆看不懂的文字,需要用正则表达式对其解析
url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9028'
#对网页发送get请求
response = requests.get(url,verify=False)
#编写正则表达式
station = re.findall(r'([\u4e00-\u9fa5]+)\|([A-Z]+)',response.text)
#字典转化,并打印,(需pip install pprint),输出的字典没有名称,需加上名称“station = ”,再使用
pprint(dict(station),indent=4)
#将字典赋给station
station = dict(station)
#以.csv形式输出
pd.DataFrame(station,index=[0]).to_csv('站点信息.csv',encoding='GB18030')

三、结果

字典形式:
在这里插入图片描述

四、总结

通常爬取站点信息是为了爬取12306车次信息,做余票查询或抢票程序。如果为了研究用途,12306的全部车次信息是非常值得关注的,下一篇将提供这方面的源代码!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值