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的全部車次信息是非常值得關注的,下一篇將提供這方面的源代碼!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章