三个小工具,大幅提高爬虫开发速度

引言

我们在进行爬虫开发的时候,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值 仅支持解析从WebForms里复制出来的值
cookie值 仅支持解析从Cookies里复制出来的值

三个函数的源码已经更新至我的gayhub了,该项目日后可能还会再更新一些爬虫中常用的代码片段,比如获取经纬度的方法等等。

也可能不会

你可能感兴趣的:(爬虫,python)