python中的urlopen()

简介

urllib.request.urlopen()这个函数主要用于用于实现对目标url的访问。

官方文档给出的原型:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

参数:

  • url:目标资源位置
  • data:用来发往服务器的额外信息,例如答题,翻译等等,但是只有打开http网址的时候,data参数才会生效
  • data参数还得是字节数据对象,data必须符合标准the standard application/x-www-form-urlencoded format,这个标准通过urllib.parse.urlencode()函数实现,这个函数只接受键/值对这种参数类型,例如字典
  • content-length:data大小
  • cafile、capath、cadefalt:用于实现可信任CA证书的HTTp请求
  • context:是想SSL加密传输

我在小甲鱼的视频里跟着写了一个实现用有道词典进行翻译的简单脚本

C0DE如下:

import urllib.request
import urllib.parse
import json`
def fanyi(words):
#目标URL
URL = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
#用户自定义表单,words表示的是用户要翻译的内容。这里使用的是dict类型,也可以使用元组列表(已经试过的)。
data = {}
data['type'] = 'AUTO'
data['i'] = words
data['doctype'] = 'json'
data['xmlVersion'] = '1.8'
data['keyfrom'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['action'] = 'FY_BY_CLICKBUTTON'
data['typoResult'] = 'true'
#将自定义data转换成标准格式
data = urllib.parse.urlencode(data).encode('utf-8')
#发送用户请求
html = urllib.request.urlopen(URL, data)
#读取并解码内容
wing = html.read().decode("utf-8")
wing_dict = json.loads(wing)
return wing_dict['translateResult'][0][0]['tgt']
if __name__ == "__main__":
print("输入quit退出")
while True:
    words = input("请小姐姐输入要查询的单词或句子:\n")
    if words == 'quit':
        break
    result = fanyi(words)
    print("喵喵喵,翻译出来啦,结果是:%s"%result)

   转载规则


《python中的urlopen()》 Wing 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录