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