Python簡單實現爬取快遞物流實時資訊

2021-10-19 22:46:07 字數 2660 閱讀 5457

前兩天有網友讓我幫忙做乙個通過快遞100這個**查快遞物流資訊的爬蟲。研究了一下,發現實現起來不是很複雜,在此整理成文件並share給大家。

爬取思路:輸入運單號後從伺服器獲取快遞公司對應的id號,然後拼接出新的請求位址來獲取相關資訊。

class

kuaidi100()

:def

__init__

(self)

: self.comcode =

"" self.temp =

"" self.url = r""

self.headers =

新建kuaidi100類,初始類方法建立comcode和temp兩個變數。comcode用來接收伺服器返回的快遞公司id,temp在請求物流資訊時會用到。

headers裡需要把』x-requested-with』: 'xmlhttprequest』加上。

def

getinfo

(self, num)

: self.num = num

self.form_data =

ret = requests.post(self.url, headers=self.headers, data=self.form_data)

find_com =

(ret.text.split(

",")[2

])self.comcode = find_com[find_com.find(

'comcode')+

10:-1

] self.temp = random.random(

) self.kuaidi_url =

''.format

(self.comcode, self.num,

str(self.temp)

) ret1 = requests.get(self.kuaidi_url, headers=self.headers)

print

(ret1.text)

再建立getinfo方法用來執行爬蟲程式,num傳參用來接收快遞單號。

用post請求來獲取快遞公司id,返回乙個字典型別的字串。提取comcode的方法可能有些不專業,如果大家有更優雅的方法記得告訴我 。

獲取temp值這塊花了點時間。我檢視了jquery**,看到math.random()時我有些吃不太準。最後推測是和comcode有關,所以就用random庫山寨了乙個,結果還真的成功了……

返回的也是字典型別的字串。不知道大家會怎麼提出資料,我是用正則匹配,不知道有沒有更好的方法?

if __name__ ==

'__main__'

: num =

str(

input

("請輸入運單號:"))

kd = kuaidi100(

) kd.getinfo(num)

為了單獨使用方便,做了個「if __name__ == 『__main__』」。

結束。

import requests

import random

class

kuaidi100()

:def

__init__

(self)

: self.comcode =

"" self.temp =

"" self.url = r""

self.headers =

defgetinfo

(self, num)

: self.num = num

self.form_data =

ret = requests.post(self.url, headers=self.headers, data=self.form_data)

find_com =

(ret.text.split(

",")[2

])self.comcode = find_com[find_com.find(

'comcode')+

10:-1

] self.temp = random.random(

) self.kuaidi_url =

''.format

(self.comcode, self.num,

str(self.temp)

) ret1 = requests.get(self.kuaidi_url, headers=self.headers)

print

(ret1.text)

if __name__ ==

'__main__'

: num =

str(

input

("請輸入運單號:"))

kd = kuaidi100(

) kd.getinfo(num)

基於上述**,大家後續可以繼續優化。比如加個**池什麼的,或者做一些快遞單號返回值的判斷,用多執行緒來提高一下效率等等。

本人非碼農專業,自學python也沒多久,有不對的地方或者有好的建議還請各位前輩耐心指教,謝謝。

python實現單詞的簡單爬取

因為不需要登入之類的操作,可以說,這是對爬蟲初學者來說最簡單最基礎的乙個案例了,由於之後要用到這裡就簡單學習記錄一下。爬取目標 金山詞霸的四六級詞彙 我們可以很容易看到四個選項,六級就不列出來了。很容易拿到,且規律這麼明顯,所以說很容易。我們每次爬取單詞的時候僅需對這四個詞庫隨機選取即可。我們選擇四...

python簡單爬蟲爬取佇列的實現

deque 是雙端佇列。set 中不允許出現重複的內容。import re import urllib import urllib.request from collections import deque queue deque 待抓取的網頁 visited set 已經抓取過的網頁 url nu...

簡單爬蟲實現 爬取URL

實驗室任務詳細 寫乙個python指令碼,指令碼後面跟上乙個url的 頁面。要求 正則匹配爬蟲的方式,匹配該url網頁中的html的href標籤中的url,顯示這些url,一行乙個。首先明確什麼是 href 定義和用法 標籤的 href 屬性用於指定超連結目標的 url。href 屬性的值可以是任何...