天天看點

urllib操作實戰一:post方式通路百度翻譯頁面分析代碼實作

頁面分析

擷取post的具體網址:

urllib操作實戰一:post方式通路百度翻譯頁面分析代碼實作

擷取需要傳遞的資料

urllib操作實戰一:post方式通路百度翻譯頁面分析代碼實作

代碼實作

from urllib import parse,request  #parse用來轉換在post時需要傳輸的值
import  json

##以翻譯hello為例
###輸入查詢詞,在header處顯示的是post方式通路,通路的連結是https://fanyi.baidu.com/sug,response時資料是json格式content-type: application/json,輸入的值是kw: hell

url="https://fanyi.baidu.com/sug"
data={'kw':'hello'}
data=parse.urlencode(data)
print(data)
headers={'content-length': len(data)}
req=request.Request(url,data=bytes(data,encoding='utf-8'),headers=headers)   #當request的參數中data是存在的時候 就是post通路方式
resp=request.urlopen(req)

###解析json格式的傳回字元串
res_json=resp.read().decode('utf-8')
print(res_json)
myjson=json.loads(res_json)
print(myjson)
print(myjson['data'][0]['v'])
           

最終執行結果:

urllib操作實戰一:post方式通路百度翻譯頁面分析代碼實作

注意:urlencode也可以用來拼接url連結:

#當需要拼接url時:如下url=
#https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=fiddler%E5%AE%89%E8%A3%85&fenlei=256&oq=fiddler%25E4%25B8%258B%25E8%25BD%25BD&rsv_pq=fcd8477700004214&rsv_t=1c661ksw6PxN371S62fgFQICO5MCASzR%2F2DNJRQd4JenyReCJUGpip9hwjg&rqlang=cn&rsv_enter=0&rsv_dl=tb&sug=fiddler&rsv_btype=t&rsv_sug3=16&rsv_sug1=11&rsv_sug7=100&prefixsug=fiddler%25E5%25AE%2589%25E8%25A3%2585&rsp=0&inputT=9322&rsv_sug4=10990
#拆分為:
#https://www.baidu.com/s
# ?
# ie=utf-8
# f=8
# rsv_bp=1
# rsv_idx=1
# tn=baidu
# wd=fiddler%E5%AE%89%E8%A3%85
# fenlei=256
# oq=fiddler%25E4%25B8%258B%25E8%25BD%25BD
# rsv_pq=fcd8477700004214
# ...等 這裡太多了 省略
# #rsv_sug4=10990
from urllib.parse import urlencode  #處理url的參數為需要的格式
para={
    'ie':'utf-8',
    'f':'8',
    'rsv_bp':'1',
    'rsv_idx':'1',
    'tn':'baidu',
    'wd':'fiddler%E5%AE%89%E8%A3%85',
    'fenlei':'256',
    'oq':'fiddler%25E4%25B8%258B%25E8%25BD%25BD',
    'rsv_pq':'fcd8477700004214'
}
url='https://www.baidu.com/s?'+urlencode(para)
print(url)
           

執行結果為:

urllib操作實戰一:post方式通路百度翻譯頁面分析代碼實作

繼續閱讀