python模块urllib
㈠ python urllib是什么模块
urllib主要提供了一些对url进行操作的功能
㈡ python3.4中urllib 有没有urlencode函数
python3.x中urlencode在urllib.parse模块中
使用方式urllib.parse.urlencode
urllib.parse.urlencode(query,
doseq=False, safe='', encoding=None,
errors=None, quote_via=quote_plus)
Convert a mapping object or a sequence of two-element tuples, which may
contain str
or bytes objects, to a “percent-encoded” string. If the
resultant string is to be used as a data for POST operation with urlopen() function, then it should be properly
encoded to bytes, otherwise it would result in a TypeError.
The resulting string is a series of key=value pairs separated by '&' characters, where
both key and value are quoted using the quote_via
function. By default, quote_plus() is used to quote the values, which
means spaces are quoted as a '+' character and ‘/’ characters are encoded as %2F, which follows the
standard for GET requests (application/x-www-form-urlencoded). An alternate
function that can be passed as quote_via is quote(), which will encode spaces as %20 and not encode ‘/’
characters. For maximum control of what is quoted, use quote and specify a value
for safe.
When a sequence of two-element tuples is used as the query argument,
the first element of each tuple is a key and the second is a value. The value
element in itself can be a sequence and in that case, if the optional parameter
doseq is evaluates to True, indivial key=value pairs separated
by '&' are
generated for each element of the value sequence for the key. The order of
parameters in the encoded string will match the order of parameter tuples in the
sequence.
The safe, encoding, and errors parameters are
passed down to quote_via (the encoding and errors
parameters are only passed when a query element is a str).
To reverse this encoding process, parse_qs() and parse_qsl() are provided in this mole to parse
query strings into Python data structures.
Refer to urllib examples to
find out how urlencode method can be used for generating query string for a URL
or data for POST.
Changed in version 3.2: Query parameter
supports bytes and string objects.
㈢ python的httplib,urllib和urllib2的区别及用
urllib和urllib2
urllib 和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。
这意味着,你不可以伪装你的User Agent字符串等。
urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。
目前的大部分http请求都是通过urllib2来访问的
httplib
httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现。
urllib简单用法
urllib.urlopen(url[, data[, proxies]]) :
[python] view plain
google = urllib.urlopen('http://www.google.com')
print 'http header:/n', google.info()
print 'http status:', google.getcode()
print 'url:', google.geturl()
for line in google: # 就像在操作本地文件
print line,
google.close()
详细使用方法见
urllib学习
urllib2简单用法
最简单的形式
[python] view plain
import urllib2
response=urllib2.urlopen('http://www.douban.com')
html=response.read()
实际步骤:
1、urllib2.Request()的功能是构造一个请求信息,返回的req就是一个构造好的请求
2、urllib2.urlopen()的功能是发送刚刚构造好的请求req,并返回一个文件类的对象response,包括了所有的返回信息。
3、通过response.read()可以读取到response里面的html,通过response.info()可以读到一些额外的信息。
㈣ python requests模块和urllib模块参数问题
requests模块本身就是基于urllib模块之上的拓展,简化了一些操作。
㈤ python urllib需要安装吗
urllib2是python自带的模块,不需要下载。 urllib2在python3.x中被改为urllib.request
㈥ urllib.parse在python2.7中怎么用
最新版的python3.3.0已经发布了。相较于python3.0,3.2的改动并不大。但网上的大量的教程等大都以2.x版本为基础。这为想要从python3.0学起的菜鸟带来了不少的困难。 作为一只菜鸟,最近想学习一下python中urllib模块的使用方法。从网上找的最简单的实例:把google 首页的html抓取下来并显示在控制台上 代码:
[python]view plain
importurllib
printurllib.urlopen('http://www.google.com').read()
- 首先,使用过python3.0的朋友都知道,print已经变成含树了,需要括号。但这不是主要问题。问题是控制台显示错误,说urllib模块中没有urlopen方法。 奇怪了,网上的教程能错了?又尝试help(urllib),发现什么方法都没有,只提供了package contents,里面有5个名字。
importurllib
help(urllib)
- ---------------------------------------------------------------------------------------------------------
importurllib
webURL="http://www.python.org"
localURL="index.html"
#通过URL打开远程页面
u=urllib.urlopen(webURL)
buffer=u.read()
printu.info()
print"从%s读取了%d字节数据."%(u.geturl(),len(buffer))
#通过URL打开本地页面
u=urllib.urlopen(localURL)
buffer=u.read()
printu.info()
print"从%s读取了%d字节数据."%(u.geturl(),len(buffer))
- 运行结果如下:
Date:Fri,26Jun200910:22:11GMT
Server:Apache/2.2.9(Debian)DAV/2SVN/1.5.1mod_ssl/2.2.9OpenSSL/0.9.8gmod_wsgi/2.3Python/2.5.2
Last-Modified:Thu,25Jun200909:44:54GMT
ETag:"105800d-46e7-46d29136f7180"
Accept-Ranges:bytes
Content-Length:18151
Connection:close
Content-Type:text/html
从http://www.python.org读取了18151字节数据.
Content-Type:text/html
Content-Length:865
Last-modified:Fri,26Jun200910:16:10GMT
从index.html读取了865字节数据.
importurlparse
URLscheme="http"
URLlocation="www.python.org"
URLpath="lib/mole-urlparse.html"
modList=("urllib","urllib2",
"httplib","cgilib")
#将地址解析成组件
print"用Google搜索python时地址栏中URL的解析结果"
parsedTuple=urlparse.urlparse(
"http://www.google.com/search?
hl=en&q=python&btnG=Google+Search")
printparsedTuple
#将组件反解析成URL
print"反解析python文档页面的URL"
unparsedURL=urlparse.urlunparse(
(URLscheme,URLlocation,URLpath,'','',''))
print" "+unparsedURL
#将路径和新文件组成一个新的URL
print"利用拼接方式添加更多python文档页面的URL"
formodinmodList:
newURL=urlparse.urljoin(unparsedURL,
"mole-%s.html"%(mod))
print" "+newURL
#通过为路径添加一个子路径来组成一个新的URL
print"通过拼接子路径来生成Python文档页面的URL"
newURL=urlparse.urljoin(unparsedURL,
"mole-urllib2/request-objects.html")
print" "+newURL
- 运行结果如下:
用Google搜索python时地址栏中URL的解析结果
('http','www.google.com','/search','',
'hl=en&q=python&btnG=Google+Search','')
反解析python文档页面的URL
http://www.python.org/lib/mole-urlparse.html
利用拼接方式添加更多python文档页面的URL
http://www.python.org/lib/mole-urllib.html
http://www.python.org/lib/mole-urllib2.html
http://www.python.org/lib/mole-httplib.html
http://www.python.org/lib/mole-cgilib.html
通过拼接子路径来生成Python文档页面的URL
[python]view plain
3.0版本中已经将urllib2、urlparse、和robotparser并入了urllib中,并且修改urllib模块,其中包含5个子模块,即是help()中看到的那五个名字。
为了今后使用方便,在此将每个包中包含的方法列举如下:
urllib.error:ContentTooShortError; HTTPError; URLError
urllib.parse:parseqs; parseqsl; quote; quotefrombytes; quote_plus; unquote unquoteplus; unquoteto_bytes; urldefrag; urlencode; urljoin;urlparse; urlsplit; urlunparse; urlunsplit
urllib.request:AbstractBasicAuthHandler; AbstractDigestAuthHandler; BaseHandler; CatheFTPHandler; FTPHandler; FancyURLopener; FileHandler; HTTPBasicAuthHandler; HTTPCookieProcessor; HTTPDefaultErrorHandler; HTTPDigestAuthHandler; HTTPErrorProcessorl; HTTPHandler; HTTPPasswordMgr; ; HTTPRedirectHandler; HTTPSHandler;OpenerDirector;ProxyBasicAuthHandler ProxyDigestAuthHandler; ProxyHandler; Request; URLopener; UnknowHandler; buildopener; getproxies; installopener; pathname2url; url2pathname; urlcleanup;urlopen; urlretrieve;
urllib.response:addbase; addclosehook; addinfo; addinfourl;
urllib.robotparser:RobotFileParser
在2.X版本下,打开HTML文档的实例:
[python]view plain
[html]view plain
若要通过urllib模块中的urlopen(url [,data])函数打开一个HTML文档,必须提供该文档的URL地址,包括文件名。函数urlopen不仅可以打开位于远程web服务器上的文件,而 且可以打开一个本地文件,并返回一个类似文件的对象,我们可以通过该对象从HTML文档中读出数据。
一旦打开了HTML文档,我们就可以像使用常规文件一样使用read([nbytes])、readline()和readlines()函数来对文件进行读操作。若要读取整个HTML文档的内容的话,您可以使用read()函数,该函数将文件内容作为字符串返回。
打开一个地址之后,您可以使用geturl()函数取得被获取网页的真正的URL。这是很有用的,因为urlopen(或使用的opener对象)也许会伴随一个重定向。获取的网页URL也许和要求的网页URL不一样。
另一个常用的函数是位于从urlopen返回的类文件对象中的info()函数,这个函数可以返回URL位置有关的元数据,比如内容长度、内容类型,等等。下面通过一个较为详细的例子来对这些函数进行说明。
--------------------------------------------------------------------------------------------------------------------------
在2.X版本下,urlparse使用实例:
[python]view plain
[python]view plain
㈦ 如何在Python中使用urllib2
urllib和urllib2urllib和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的UserAgent字符串等。urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。目前的大部分http请求都是通过urllib2来访问的httplibhttplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现。
㈧ eclipse里的python环境如何导入urllib模块
2:如果没有出错的话,则说明Eclipse的插件集成的方式有问题。 3:试着查看PyDev里面有个当前可供加载模块的路径,或者用一个小程序测试下 import sys; print sys.path; 看下%Python_HOME%\lib目录在不在你的环境变量里,如果不在,手动加上。 这样应该就好使了我试了一下,path没问题的,在命令行也是可以的,估计是插件有点问题 问题补充:我在eclipse里写代码: import urllib print dir(urllib)输出的是:['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'urllib'] 这里的确没有urllib,但是在命令行窗口执行:dir(urllib),输出的命令比这个多多了,里面也有urlopen,这是啥问题呢? 问题补充:bestchenwu 写道 兄弟,如果你的Python解释执行环境没问题的话,那就是插件集成的问题了。 点开Window->Preferences->Pydev->Interpreter Python,找到Libraies那个选项卡。看%Python_HOME%lib在不在你的插件库里面。如果在的话,但还是编写文件出错的话,强制将它们加入编译环境中吧。 方法是:还是刚才的选项卡,点开第二项Forced Builtins,将urllib强制加入进去。不过我不推荐你这样做,因为这个方法大多数时候是针对第三方库才这么做的。urllib模块是Python发布包里自带的。还是不行的 问题补充:bestchenwu 写道这个。。。 试下别的IDE吧貌似坛子里的大牛们,都推荐PyCharm,给个链接你参考下:
㈨ python urllib2模块 在哪里下载
urllib2是python自带的模块,不需要下载。
urllib2在python3.x中被改为urllib.request