Python爬蟲教程-07-post介紹(百度翻譯)(上)

Python爬蟲教程-07-post介紹(百度翻譯)(上)

  • 訪問網絡兩種方法
  • get:
    • 利用參數給服務器傳遞信息
    • 參數爲dict,使用parse編碼
  • post :(今天給你們介紹的post)
    • 通常向服務器傳遞參數使用
    • post是把信息自動加密處理
    • 使用post傳遞信息,須要用到data參數
    • 使用post意味着http的請求頭信息可能須要更改:
      • Content-Type:application/x-www.form-urlencode
      • Content-Length:數據長度
      • 簡而言之,一旦更改請求的方法,注意其餘請求頭部信息相適應
    • urllib.parse.urlencode能夠將字符串自動轉換成上面的格式

案例v7

  • post經典案例,就是百度翻譯
    • 利用parse模塊模擬post請求
    • 分析步驟
      • 1.打開開發者工具F12>【Network】>【XHR】>【Headers】
      • 2.嘗試簡單的單詞,查看發出的請求
      • 3.找到請求地址URL,請求的方式Method
      • 4.找到參數的傳遞格式Content-Type, 參數樣式Form Data
  • 編寫代碼
# 案例v7百度翻譯
from urllib import request,parse
# 導入json包,負責處理json格式的模塊
import json

'''
大體流程:
1.利用data構造內容,而後urlopen打開
2.返回一個json格式的結果
3.結果就應該是服務器返回的釋義
'''

baseurl = 'http://fanyi.baidu.com/sug'
# 存放用來模擬form的數據,必定是dict格式
keyword = input("請輸入須要翻譯的內容:")
data = {
    'kw': keyword
}
# print(data)

# 須要使用parse模塊對data進行編碼
data = parse.urlencode(data)
data = data.encode('utf-8')
# print("編碼後的data:",data)
# print("編碼後的data類型:",type(data))
# 當須要類型爲bytes時:在數據的後面加上: data = data.encode('utf-8')

# 構造請求頭,請求頭部至少包含:
# 1.傳入數據的長度
# 2.request要求傳入的請求是一個dict格式

# 有了headers,data,url就能夠嘗試發出請求
rsp = request.urlopen(baseurl,data=data)

json_data = rsp.read().decode()

# 把json字符串轉換爲字典
json_data = json.loads(json_data)
# print(json_data)

for item in json_data['data']:
    if item['k'] == keyword:
        print(item['k'], ": ", item['v'])

運行結果

這裏寫圖片描述

更多文章連接:Python 爬蟲隨筆

<hr>- 本筆記不容許任何我的和組織轉載git

相關文章
相關標籤/搜索