爬虫: 解析cookie和data字符串得到json格式

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值