關於 urlencode 的使用和 json 模塊的介紹


先附上一段 “百度翻譯” 的爬蟲代碼

# python爬蟲實現百度翻譯 # urllib和request POST參數提交
from urllib import request,parse import json def fanyi(keyword): base_url = 'https://fanyi.baidu.com/sug'
    # 構建請求對象
    data = {'kw': keyword} data = parse.urlencode(data).encode('utf-8') # 模擬瀏覽器
    header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} req = request.Request(url=base_url,data=data,headers=header) res = request.urlopen(req) # 獲取響應的json字符串
    str_json = res.read().decode('utf-8') # 把json轉換成字典
    myjson = json.loads(str_json)  # 將字符串轉化為字典
    info = myjson['data'][0]['v'] print(info) if __name__=='__main__': while True: keyword = input('請輸入翻譯的單詞:') if keyword == 'q': break fanyi(keyword)

1. 其中,data = parse.urlencode(data).encode('utf-8') 的作用是,將字典里面所有的鍵值轉化為 query-string 格式(key=value&key=value),並且將中文轉碼。

2. 然后,req = request.Request(url=base_url,data=data,headers=header)的作用是,將base_url, data, headers 拼接成一個請求的 url, 命名為 req。

注:在這里要仔細介紹一下 python3 的編碼問題。(看了好多資料才明白)

      參考 https://blog.csdn.net/xiaofan_0208/article/details/77366363

              https://blog.csdn.net/apache0554/article/details/53889253

    data = parse.urlencode(data).encode('utf-8') ,是將data轉化為 utf-8格式的編碼。decode()都是將其他編碼轉換為Unicode編碼。

 

3. myjson = json.loads(str_json) 的作用是,將字符串轉化為字典,因為從瀏覽器讀取出來的內容都是字符串格式。

    編碼和解碼JSON數據的兩個主要的函數是 json.dumps() 和 json.loads()。參考本片文章:https://blog.csdn.net/liangxy2014/article/details/78984998

import json data = { 'name' : 'ACME', 'shares' : 100, 'price' : 542.23
} json_str = json.dumps(data) # 將字典編碼成 json 格式 data = json.loads(json_str) # 將 json文本 解碼成字典格式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM