三個小工具,大幅提高爬蟲開發速度

引言

我們在進行爬蟲開發的時候,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了,該項目日後可能還會再更新一些爬蟲中常用的代碼片段,比如獲取經緯度的方法等等。

也可能不會 😃

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