爬蟲: 解析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()

 

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