引言
我們在進行爬蟲開發的時候,fildder是一個必不可少的神器。尤其是現在大型網站的反爬越來越難處理,經常會花費我們大量的時間來找到哪些參數是必須的。因此如果能夠快速的將fildder抓到的包裏面的參數轉換成python可用的格式,那麼無疑可以極大的提高我們的開發效率。
因此我寫了小工具,主要目的是爲了快速的將fildder裏抓到的header
,data
,cookie
轉換成requests
,scrapy
等支持的dict
格式。
解析data參數
注意: 僅支持解析從
WebForm
裏複製參數
將data
的參數從WebForm
裏複製出來的格式是這樣的:
_token
address
channel 6
cityId
gpsLat 23.135075
gpsLng 113.357076
shopId 0
source shoplist
第一列爲
key
值,第二列爲value
值。 後面爲空的表示value
的值便爲空。
由於它的規則還是十分整齊的,所以可以使用正則來將其分別提取出來:
import re
def re_data(data):
key_rule='(.*)\t'
key = re.findall(key_rule,data)
value_rule = '\t(.*)'
value = re.findall(value_rule,data)
print(len(key))
print(len(value))
result = {}
if len(key) == len(value):
for i in range(len(key)):
result[key[i]] = value[i]
print(result)
上面的那段data參數使用此函數的運行結果爲:
{'_token': '', 'address': '', 'channel': '6', 'cityId': '', 'gpsLat': '23.135075', 'gpsLng': '113.357076', 'shopId': '0', 'source': 'shoplist'}
該結果會在控制檯輸出,由於結果是一個標準的dict
,所以我們可以直接的將其複製到python代碼使用就好。
無論參數有多少,整個過程只需要十秒鐘。相比之前一個參數一個參數的複製粘貼來講,效率提高了數倍。
解析header,cookie參數
同樣的道理,對於header
,cookie
的值,我們也可以使用正則的方法來解析:
解析 header
def re_header(header):
key = re.findall('[\t|\n]([\w*|\.|-]*):',header)
val = re.findall(':[\n\t]*(.*)\n',h1)
header = {}
print(key)
print(val)
for i in range(0,len(key)):
header[key[i]] = val[i].lstrip(' ')
print(key[i],val[i])
print(len(key))
print(len(val))
print(header)
解析 cookie
def re_cookie(cookieStr):
print(cookieStr.encode('utf-8'))
key = re.findall('[\t|\n]([\w*|\.]*)=',cookieStr)
val = re.findall('=[\n\t]*(.*)\n',cookieStr)
cookies = {}
for i in range(0, len(key)):
cookies[key[i]] = val[i]
print(key[i], val[i])
print(key)
print(len(key))
print(len(val))
print(cookies)
使用方法同解析data
一樣,這裏不做多餘的演示。
注意:
header值 僅支持解析從raw
裏複製出來的值
data值 僅支持解析從WebForm
裏複製出來的值
- cookie值 僅支持解析從
cookie
裏複製出來的值
三個函數的源碼已經更新至我的gayhub了,該項目日後可能還會再更新一些爬蟲中常用的代碼片段,比如獲取經緯度的方法等等。
也可能不會 😃