python中url什么意思_Python中urlopen()介绍

#以下介绍是基于Python3.4.3

一. 简介

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

函数原型如下:urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

函数定义如下:

def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,

*, cafile=None, capath=None, cadefault=False, context=None):

global _opener

if cafile or capath or cadefault:

if context is not None:

raise ValueError(

"You can't pass both context and any of cafile, capath, and "

"cadefault"

)

if not _have_ssl:

raise ValueError('SSL support not available')

context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH,

cafile=cafile,

capath=capath)

https_handler = HTTPSHandler(context=context)

opener = build_opener(https_handler)

elif context:

https_handler = HTTPSHandler(context=context)

opener = build_opener(https_handler)

elif _opener is None:

_opener = opener = build_opener()

else:

opener = _opener

return opener.open(url, data, timeout)

二. 函数参数介绍

<1>url 参数:目标资源在网路中的位置。可以是一个表示URL的字符串(如:http://www.xxxx.com/);也可以是一个urllib.request对象,详细介绍请跳转

<2>data参数:data用来指明发往服务器请求中的额外的信息(如:在线翻译,在线答题等提交的内容)。HTTP是python中实现的众多网络通信http、https、ftp等协议中,唯一一个 使用data 参数的,也就是说只有打开的是http网址的时候,自定义data参数才会有作用。另外,官方API手册介绍指出:

<2.1> data必须是一个字节数据对象(Python的bytes object)

<2.2>data必须符合标准the standard application/x-www-form-urlencoded format,怎么得到这种标准结构的data呢?使用urllib.parse.urlencode()将自定义的data转换成

标准格式,而这个函数所能接收的参数类型是pyhon中的mapping object(键/值对,如dict) or a sequence of two-element tuples(元素是tuple的列表)。

<2.3>data也可以是一个可迭代的对象,这种情况下就需要配置response对象中的Conten-length,指明data的大小。

<2.4>data默认是None,此时以GET方式发送请求;当用户给出data参数的时候,改为POST方式发送请求。

<3>cafile、capath、cadefault 参数:用于实现可信任的CA证书的HTTP请求。(基本上很少用)

<4>context参数:实现SSL加密传输。(基本上很少用)

三. 举个栗子

下面这个程序,实现了urlopen()函数的大部分功能,特别是data参数。data自定义,data格式转换,数据的编码encode()和解码decode()。

#coding=utf-8

#Python3.4.3 OS:W7-32

'''

利用有道翻译进行在线翻译

'''

import urllib.request

import urllib.parse

import json

def traslate(words):

#目标URL

targetURL = "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(targetURL, data)

#读取并解码内容

rst = html.read().decode("utf-8")

rst_dict = json.loads(rst)

return rst_dict['translateResult'][0][0]['tgt']

if __name__ == "__main__":

print("输入字母q表示退出")

while True:

words = input("请输入要查询的单词或句子:\n")

if words == 'q':

break

result = traslate(words)

print("翻译结果是:%s"%result)

~~~~有待改进,希望大家提出宝贵意见,一同学习。

=======================================================================================================

参考来源:《小甲鱼零基础入门学Python》这个视频讲的超好,诙谐幽默,又详细。

python中namedtuple介绍

namedtuple:namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护.namedtuple能够用来创建类似于元祖的数 ...

python中模块介绍

一,模块概念 在计算机程序开发的过程当中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编码更加容易维护,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...

如何解决python中urlopen超时问题

看代码: 利用urlopen中的超时参数设立一个循环 while True: try: page = urllib.request.urlopen(url, timeout=3) break exce ...

三十八、python中反射介绍

一.反射:根据字符串的形式去对象(某个模块)中去操作成员通过字符串的形式,导入模块通过字符串的形式,去模块中寻找指定的函数,并执行 1.__import__:用于字符串的形似执行导入模块 inp=in ...

三十六、python 中subprocess介绍

import subprocess 1.执行系统命令subprocess.call('ipconfig') #shell=False时,拼接命令分开写,放在列表中,等于True时,可写一块,空格隔开例 ...

【转】Python中的赋值、浅拷贝、深拷贝介绍

这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

Python中的&lowbar;&lowbar;init&lowbar;&lowbar;和&lowbar;&lowbar;new&lowbar;&lowbar;介绍

介绍 首先我们要知道在面向对象编程中,实例化基本遵循创建实例对象.初始化实例对象.最后返回实例对象这么一个过程. Python 中的 __new__ 方法负责创建一个实例对象,__init__ 方法负 ...

&lbrack;转载&rsqb;python中multiprocessing&period;pool函数介绍

原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...

python中multiprocessing&period;pool函数介绍&lowbar;正在拉磨&lowbar;新浪博客

python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

随机推荐

druid 配置

连接池配置,以及相关配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值