主要核心**:
get_citycode.py
import requests
def get_city():
target = ""
req = requests.get(url=target)
station_names = req.text
station_names_new = station_names.replace("var station_names ='", "").split("@")
del station_names_new[0]
station_names_new[-1] = station_names_new[-1].replace("';", "")
number = len(station_names_new)
for i in range(0, number, 1):
station_names_new[i] = station_names_new[i].split("|")
station = {}
for j in range(0, number, 1):
station[station_names_new[j][1]] = station_names_new[j][2]
return station
if __name__ == "__main__":
print(get_city()['鄭州'])
get_ticketinfo.py
import requests
import get_url
import re
import get_citycode
from prettytable import prettytable
def city_code_name():
"""字典鍵值互換
前提:鍵值唯一
返回互換後的字典
"""city_code = get_citycode.get_city().copy()
code_name = dict(zip(city_code.values(), city_code.keys()))
return code_name
def get_ticket_info():
"""re.sub(pattern, replace, string, count=0, flags=0)
pattern : 正則中的模式字串。replace : 替換的字串,也可為乙個函式。
string : 要被查詢替換的原始字串。
count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配。
flags : 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。
"""data = requests.get(url=get_url.geturl())
data1 = re.findall("\[.*\]", data.text)
'''data1是乙個列表,格式為['["1","2","3"]']'''
data2 = data1[0]
"""data2是個字串,暈死!!!"""
data3 = data2.replace("[", "").replace("]", "").split(",")
"""split 返回乙個元組"""
number = len(data3)
# 車次數量
"""format:
*|預訂|*|車次|*|*|起始站|終點站|出發時間|到達時間|歷時|*|*|*|*|*|*|*|*|*||高階軟臥||軟臥一等臥|||無座||
0| |2| |4,5 | |11-19| 20| 22 24 25 27
硬臥二等座|硬座|二等座|一等座|商務座特等座|動臥|*|*|*|*|*
|34 35 36 37 38
"""del_list = [0, 2, 4, 5, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24, 25, 27, 34, 35, 36, 37, 38]
del_number = len(del_list)
c = 0
for x in range(del_number):
del_list[x] = del_list[x] - c
c = c + 1
for i in range(number):
data3[i] = data3[i].split("|")
for j in range(del_number):
del data3[i][del_list[j]]
# 在迭代的過程中每刪除乙個元素,接下來將要刪除的元素下標要減一,注意!
"""format:
|預訂|車次|起始站|終點站|出發時間|到達時間|歷時|高階軟臥|軟臥一等臥|無座|硬臥二等座|硬座|二等座|一等座|商務座特等座|動臥|
senior soft sleeper|soft sleeper first bedroom|no seat|hard sleeper second seat|hard seat|second class seat|
first class seat|business seat special seat|moving bedroom|
"""finally_data = data3
train_numbers = len(finally_data)
start_station_key = # 起始站
to_station_key = # 終點站
start_time = # 出發時間
to_time = # 到達時間
cost_time = # 歷時
train_code = # 車次
senior_soft = # 高階軟臥
soft_first = # 軟臥一等臥
no_seat = # 無座
hard_second = # 硬臥二等座
hard_seat = # 硬座
second_seat = # 二等座
first_seat = # 一等座
business_seat = # 商務座
moving_sleep = # 動臥
tips = # 提示資訊
for i in range(train_numbers):
"""輸出格式:
車次 出發站 到達站 出發時間 到達時間 歷時 商務座 一等座 二等座 高階軟臥 軟臥 動臥 硬臥 硬座 無座 備註
"""table = prettytable()
"""prettytable庫:
快捷建立**並列印輸出;
安裝:pip install prettytable
匯入:from prettytable import prettytable
建立:x = prettytable()
"""table.add_column("車次", train_code)
table.add_column("出發站", start_station_key)
table.add_column("到達站", to_station_key)
table.add_column("出發時間", start_time)
table.add_column("到達時間", to_time)
table.add_column("歷時", cost_time)
table.add_column("商務座", business_seat)
table.add_column("一等座", first_seat)
table.add_column("二等座", second_seat)
table.add_column("高階軟臥", senior_soft)
table.add_column("軟臥", soft_first)
table.add_column("動臥", moving_sleep)
table.add_column("硬臥", hard_second)
table.add_column("硬座", hard_seat)
table.add_column("無座", no_seat)
table.add_column("備註", tips)
print(table)
寫到這裡吧,gui部分就不上傳了。 Python爬蟲學習 一 12306餘票資訊爬取
1.12306有反爬取機制,餘票資訊是在網頁就緒以後非同步載入出來的,首先我們可以開啟谷歌瀏覽器找到,找到中間請求的url,例如餘票檢索按鈕單擊的時候 由上圖可知,餘票資訊是放在result裡面的 2.取得這些資料 req urllib.request.request html req.add he...
python 爬蟲(7) 驗證碼登陸 12306
登陸乙個介面需要使用者名稱 密碼 還有驗證碼。驗證碼的辨識,一般都是第三方,且需要付費的。比如雲打碼,打碼兔,超級鷹。12306用的是超級鷹。得到驗證碼 1.訪問網頁 3.儲存到本地 4.識別驗證碼 得到字串或者數字 from lxml import etree import requests he...
Python 爬蟲(獲取小說)
以 筆趣閣 為例 需求 python3版本以上 安裝方法如下 先安裝python3 pip,然後檢查下版本,如果版本可以公升級,就 upgrade pip 一下,然後再安裝beautifulsoup4 sudo apt get install python3 pip pip3 version pip...