1. 为什么写这篇博客
方便自己用和提供给他人用
2. 写这个的原因
我们在写爬虫的时候抓包的过程中,往往都会看请求中带有的cookie和发送的参数,但是我们用的过程中,cookie可以直接粘在headers头里面。但有时也要单独写,但是data是一定要单独写成json格式,如果参数一多,我遇到过最多的30多个参数的,如果一个个的复制粘贴的话,得弄很久,而且有时候弄成字符串的话如果参数中有中文的话还会乱码,所以我就根据这个写了一段代码来解析其中的cookie和data,将他们转换成json格式
3. 示列: 复制相应的值到代码的相应位置即可(cookie的话只复制值,不要将前面的 Cookie:粘上)
4. 代码
class SpiderCookieData:
def getCookie(self):
"""
将复制过来的cookie字符串转换成json格式
:return:
"""
print('='*10 + '清洗cookie字符串' + '='*10)
# 将cookie字符串放到里面
cookie_string = """
JSESSIONID=8E21D3B58845EEFAFEC7E9C4934786E0; PHPStat_First_Time_10000001=1584514754879; PHPStat_Cookie_Global_User_Id=_ck20031814591418849296056918907; PHPStat_Return_Time_10000001=1584514754879; PHPStat_Main_Website_10000001=_ck20031814591418849296056918907%7C10000001%7C%7C%7C; zycna=7JpBhDgu8eUBAduOkqsQatbC
"""
cookie_string = cookie_string.strip('\n').strip()
print('清洗后的字符串为: ', cookie_string)
cookie_list = cookie_string.split(';')
cookie_new_list = [i.strip('\n').strip() for i in cookie_list]
cookie_dict = {}
for ck in cookie_new_list:
if '=' in ck:
# 如果有两个=,那么只选最左边的切
ck_list = ck.split('=', 1)
cookie_dict[ck_list[0]] = ck_list[1]
print('cookies = ', cookie_dict)
for k, v in cookie_dict.items():
print(k, ' = ', v)
print('=' * 10 + 'END' + '=' * 10 + '\n'*3)
def getData(self):
"""
解析请求的参数中的值
:return:
"""
print('*' * 10 + '清洗data字符串' + '*' * 10)
data_string = """
contentKey: 西安
op: single
siteID:
sort: date
"""
data_string = data_string.strip('\n').strip()
print('清洗后的字符串为: ', data_string)
data_list = data_string.split('\n')
data_new_list = [i.strip('\n').strip('\t') for i in data_list]
data_dict = {}
for dt in data_new_list:
dt_list = dt.split(':', 1)
k = dt_list[0].strip('\n').strip()
v = dt_list[1]
if v != ' ':
v = v.strip('\n').strip()
else:
v = ''
data_dict[k] = v
print(data_dict)
print('*' * 10 + 'END' + '*' * 10 + '\n'*3)
def main():
spider = SpiderCookieData()
spider.getCookie()
spider.getData()
if __name__ == '__main__':
main()