⑴ 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()
[python]view plain
importurllib
help(urllib)
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
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))
[html]view plain
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位元組數據.
若要通過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
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
[python]view plain
用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中url用什麼符號拼接
普通的加號就可以啦
myUrl = self.url + str(i) + '.html'
⑶ 最基礎的format拼接url放在for里怎麼寫
用代碼寫。
通過python的format函數即可完成拼接,把所以ID放到一個集合里,使用for循環就可以批量替換了。
輸入python回車之後,urls列表中將tag=python賦值給tag,在for循環的作用下賦值了兩次,之後整個的被看成是一個整體,此時,繼續for循環,將1和2賦值給變數i,但是此時的url構造已經是一個完整。
⑷ python3中為什麼urlparse.urljoin沒有了
python3對urllib和urllib2進行了重構,拆分成了urllib.request, urllib.response, urllib.parse, urllib.error等幾個子模塊,這樣的架構從邏輯和結構上說更加合理。
urljoin現在對應的函數是urllib.parse.urljoin
⑸ python url拼接代碼
方法來自網路,保存以便以後自用。
經測試可正確拼接下列形式
base1 = ' http://www.bagtree.com/' url1 = '../../themes/bagtree_2011/images/pin.gif'
base2 = ' http://info.ceo.hc360.com/list/qygl-ldl.shtml' url2 = '/2011/11/250020188368.shtml'
base3 = ' http://info.ceo.hc360.com/2012/07/190833206838.shtml' url3 = '190833206838-2.shtml'
1_url = " https://pvp.qq.com/web201605/ "
2_url="/herodetail/531.shtml"
add_url =" https://pvp.qq.com/web201605/herodetail/531.shtml "
⑹ python爬蟲如何給url設置變數
url='http://xxxxxxx.simple.com/xxxxxxxx'
data={
'xxx':0,
'type':0,
'status':3,
'actName':''}
cookies={'xxxx':'xxxxxx',
'uid':'xxxxxx'}
data['xxx']=44
h=requests.get(url,params=data,cookies=cookies,timeout=3000)
#url可以通過h.url查看
requests可以通過params自動拼接
如果是urllib, 沒用過, 只知道parse可以拼接參數
>>>importurllib
>>>urllib.parse.urlencode({"a":11,"b":22})
'a=11&b=22'
⑺ 【Python中常用的庫系列】——操作url的模塊urlparse 模塊
文章目錄
一、功能介紹
二、功能介紹
1.`urlparse.urlparse`
2.`urlparse.urlsplit`
3.`urlparse.urljoin`
一、功能介紹
官方文檔 :http://docs.python.org/library/urlparse.html
作用:urlparse模塊主要是用於解析url中的參數 對url按照一定格式進行 拆分或拼接
注意:urlparse 模塊在 python 3.0 中 已經改名為 urllib.parse
二、功能介紹
1.urlparse.urlparse
1.1 獲取ParseResult對象
將url分為6個部分,返回一個包含6個字元串的元組:協議、位置、路徑、參數、查詢、片段。
舉例:
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change
'''
輸出結果:
ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')
'''
scheme 是協議
netloc 是域名伺服器
path 相對路徑
params是參數
query是查詢的條件
fragment是片段
1.2獲取結果的某一項
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change.query # opt=1
print url_change.scheme # https
1.3獲取結果的某一項,用字典或元組展示
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print urlparse.parse_qs(url_change.query) # {'opt': ['1']}
print urlparse.parse_qsl(url_change.query) # [('opt', '1')]
2.urlparse.urlsplit
2.1獲取SplitResult對象
和urlparse差不多,將url分為5部分,返回一個包含5個字元串項目的元組:協議、位置、路徑、查詢、片段。
import urlparse
url_change = urlparse.urlsplit('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change
'''
輸出結果:
SplitResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', query='opt=1', fragment='')
'''
scheme 是協議
netloc 是域名伺服器
path 相對路徑
query是查詢的條件
fragment是片段
2.2獲取某一項
print url_change.scheme # https
3.urlparse.urljoin
將相對的地址組合成一個url,對於輸入沒有限制,開頭必須是http://或者https://,否則將不組合前面。
import urlparse
new_url = urlparse.urljoin('https://.com/ssss/','88888')
print new_url
'''
https://.com/ssss/88888
''' 注意 :如果輸入錯誤信息 如 new_url = urlparse.urljoin('122','88888') 並不會將兩者合並,而輸出後邊的鏈接,即『88888』
域名放在第一個參數,第二個參數為要和域名拼接的子鏈接
⑻ 利用Python縮短URL鏈接
有時候我們要把一些鏈接發簡訊通知別人,如果鏈接太長,一條簡訊支持不了。
發現Python就可以解決這個問題。
第一步: 安裝庫
在windows下,輸入cmd,進入DOS界面,輸入 pip install pyshorteners
當然,前提是你已經安裝了pip
第二步:寫程序
第三步:調用程序
如果你是用Jupyter Notebook,你可以參考以下步驟
⑼ python爬蟲數據提取
理論上可以,實際要看目標網頁的情況,反爬蟲機制、js動態刷新抓取都是比較頭疼的。
當然如果不考慮效率,selenium 之類的網頁自動化方式,通常都可以實現。
⑽ Python有包可以合並兩個url嗎就是將兩個url整合成為一個,不同的應用掃描訪問不同的url
from urllib import parse
parse.join()可以合並URL