最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果

 更新時(shí)間:2019年05月07日 15:11:27   作者:Jack-Cui  
這篇文章主要介紹了Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

上一篇內(nèi)容,已經(jīng)學(xué)會(huì)了使用簡(jiǎn)單的語(yǔ)句對(duì)網(wǎng)頁(yè)進(jìn)行抓取。接下來,詳細(xì)看下urlopen的兩個(gè)重要參數(shù)url和data,學(xué)習(xí)如何發(fā)送數(shù)據(jù)data

一、urlopen的url參數(shù) Agent

url不僅可以是一個(gè)字符串,例如:http://www.baidu.com。url也可以是一個(gè)Request對(duì)象,這就需要我們先定義一個(gè)Request對(duì)象,然后將這個(gè)Request對(duì)象作為urlopen的參數(shù)使用,方法如下:

# -*- coding: UTF-8 -*-
from urllib import request

if __name__ == "__main__":
  req = request.Request("http://fanyi.baidu.com/")
  response = request.urlopen(req)
  html = response.read()
  html = html.decode("utf-8")
  print(html)

同樣,運(yùn)行這段代碼同樣可以得到網(wǎng)頁(yè)信息。可以看一下這段代碼和上個(gè)筆記中代碼的不同,對(duì)比一下就明白了。

urlopen()返回的對(duì)象,可以使用read()進(jìn)行讀取,同樣也可以使用geturl()方法、info()方法、getcode()方法。

geturl()返回的是一個(gè)url的字符串;

info()返回的是一些meta標(biāo)記的元信息,包括一些服務(wù)器的信息;

getcode()返回的是HTTP的狀態(tài)碼,如果返回200表示請(qǐng)求成功。

關(guān)于META標(biāo)簽和HTTP狀態(tài)碼的內(nèi)容可以自行百度百科,里面有很詳細(xì)的介紹。

了解到這些,我們就可以進(jìn)行新一輪的測(cè)試,新建文件名urllib_test04.py,編寫如下代碼:

# -*- coding: UTF-8 -*-
from urllib import request

if __name__ == "__main__":
  req = request.Request("http://fanyi.baidu.com/")
  response = request.urlopen(req)
  print("geturl打印信息:%s"%(response.geturl()))
  print('**********************************************')
  print("info打印信息:%s"%(response.info()))
  print('**********************************************')
  print("getcode打印信息:%s"%(response.getcode()))

可以得到如下運(yùn)行結(jié)果:

二、urlopen的data參數(shù)

我們可以使用data參數(shù),向服務(wù)器發(fā)送數(shù)據(jù)。根據(jù)HTTP規(guī)范,GET用于信息獲取,POST是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,再換句話說:

從客戶端向服務(wù)器提交數(shù)據(jù)使用POST;

從服務(wù)器獲得數(shù)據(jù)到客戶端使用GET(GET也可以提交,暫不考慮)。

如果沒有設(shè)置urlopen()函數(shù)的data參數(shù),HTTP請(qǐng)求采用GET方式,也就是我們從服務(wù)器獲取信息,如果我們?cè)O(shè)置data參數(shù),HTTP請(qǐng)求采用POST方式,也就是我們向服務(wù)器傳遞數(shù)據(jù)。

data參數(shù)有自己的格式,它是一個(gè)基于application/x-www.form-urlencoded的格式,具體格式我們不用了解, 因?yàn)槲覀兛梢允褂胾rllib.parse.urlencode()函數(shù)將字符串自動(dòng)轉(zhuǎn)換成上面所說的格式。

三、發(fā)送data實(shí)例

向有道翻譯發(fā)送data,得到翻譯結(jié)果。

1.打開有道翻譯界面,如下圖所示:

2.鼠標(biāo)右鍵檢查,也就是審查元素,如下圖所示:

3.選擇右側(cè)出現(xiàn)的Network,如下圖所示:

4.在左側(cè)輸入翻譯內(nèi)容,輸入Jack,如下圖所示:

5.點(diǎn)擊自動(dòng)翻譯按鈕,我們就可以看到右側(cè)出現(xiàn)的內(nèi)容,如下圖所示:

6.點(diǎn)擊上圖紅框中的內(nèi)容,查看它的信息,如下圖所示:

7.記住這些信息,這是我們一會(huì)兒寫程序需要用到的。

新建文件translate_test.py,編寫如下代碼:

# -*- coding: UTF-8 -*-
from urllib import request
from urllib import parse
import json

if __name__ == "__main__":
  #對(duì)應(yīng)上圖的Request URL
  Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/link'
  #創(chuàng)建Form_Data字典,存儲(chǔ)上圖的Form Data
  Form_Data = {}
  Form_Data['type'] = 'AUTO'
  Form_Data['i'] = 'Jack'
  Form_Data['doctype'] = 'json'
  Form_Data['xmlVersion'] = '1.8'
  Form_Data['keyfrom'] = 'fanyi.web'
  Form_Data['ue'] = 'ue:UTF-8'
  Form_Data['action'] = 'FY_BY_CLICKBUTTON'
  #使用urlencode方法轉(zhuǎn)換標(biāo)準(zhǔn)格式
  data = parse.urlencode(Form_Data).encode('utf-8')
  #傳遞Request對(duì)象和轉(zhuǎn)換完格式的數(shù)據(jù)
  response = request.urlopen(Request_URL,data)
  #讀取信息并解碼
  html = response.read().decode('utf-8')
  #使用JSON
  translate_results = json.loads(html)
  #找到翻譯結(jié)果
  translate_results = translate_results['translateResult'][0][0]['tgt']
  #打印翻譯信息
  print("翻譯的結(jié)果是:%s" % translate_results)

這樣我們就可以查看翻譯的結(jié)果了,如下圖所示:

JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,我們需要從爬取到的內(nèi)容中找到JSON格式的數(shù)據(jù),這里面保存著我們想要的翻譯結(jié)果,再將得到的JSON格式的翻譯結(jié)果進(jìn)行解析,得到我們最終想要的樣子:杰克。

以上所述是小編給大家介紹的Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • python寫入中英文字符串到文件的方法

    python寫入中英文字符串到文件的方法

    這篇文章主要介紹了python寫入中英文字符串到文件的方法,實(shí)例分析了Python操作中英文字符串的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Python全棧之進(jìn)程和守護(hù)進(jìn)程

    Python全棧之進(jìn)程和守護(hù)進(jìn)程

    這篇文章主要為大家介紹了Python進(jìn)程和守護(hù)進(jìn)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致

    如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致

    這篇文章主要介紹了如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致,需要的朋友可以參考下
    2017-11-11
  • openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能

    openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能

    最近在惡補(bǔ)opencv,在前期不太那么認(rèn)真的學(xué)習(xí)狀態(tài)下,著手搞了一下這個(gè)小項(xiàng)目實(shí)戰(zhàn),基于模板匹配下的銀行卡卡號(hào)識(shí)別,下面這篇文章主要給大家介紹了關(guān)于openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python入門_淺談邏輯判斷與運(yùn)算符

    Python入門_淺談邏輯判斷與運(yùn)算符

    下面小編就為大家?guī)硪黄狿ython入門_淺談邏輯判斷與運(yùn)算符。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Pandas 按索引合并數(shù)據(jù)集的方法

    Pandas 按索引合并數(shù)據(jù)集的方法

    今天小編就為大家分享一篇Pandas 按索引合并數(shù)據(jù)集的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python使用requests提交HTTP表單的方法

    Python使用requests提交HTTP表單的方法

    今天小編就為大家分享一篇Python使用requests提交HTTP表單的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn)

    Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn)

    這篇文章主要介紹了Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python實(shí)現(xiàn)讀取excel中的圖片功能

    Python實(shí)現(xiàn)讀取excel中的圖片功能

    這篇文章主要介紹了如何利用Python實(shí)現(xiàn)讀取Excel中的圖片的功能,文中的實(shí)現(xiàn)步驟講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-01-01
  • Python Tkinter之事件處理詳解

    Python Tkinter之事件處理詳解

    事件處理,是 GUI 程序中不可或缺的重要組成部分,相比來說,控件只是組成一臺(tái)機(jī)器的零部件。本文我們將對(duì) Tkinter 中的事件處理機(jī)制做詳細(xì)的介紹,需要的可以參考一下
    2022-01-01

最新評(píng)論

大余县| 蓝山县| 西盟| 迁安市| 三穗县| 仁怀市| 滦平县| 永年县| SHOW| 阿拉善右旗| 安丘市| 永和县| 伊金霍洛旗| 平舆县| 临高县| 五常市| 阿勒泰市| 灵石县| 灵武市| 灵石县| 宿州市| 隆德县| 崇礼县| 贵阳市| 铅山县| 祁阳县| 常州市| 湘潭市| 乐昌市| 红桥区| 瑞安市| 措勤县| 东光县| 阿瓦提县| 慈利县| 射洪县| 磐石市| 长丰县| 鹤岗市| 沛县| 安达市|