urllib模塊使用

urllib模塊

作用

主要用于從網(wǎng)頁上抓取數(shù)據(jù)蟆湖。以及封裝了一些常用的URL編碼解碼函數(shù)

使用方法

最簡(jiǎn)單的使用, 以打開百度為例

import urllib
url = 'http://www.baidu.com'
print urllib.urlopen(url).read()

注意點(diǎn):

  • url必須加上協(xié)議頭"http://", 否則會(huì)不起作用玻粪,認(rèn)為是打開本地文件
  • urlopen默認(rèn)是get方法, 加上data參數(shù)就是post

使用代理

proxies = {'http': 'http://www.someproxy.com:3128'}
filehandle = urllib.urlopen(some_url, proxies=proxies)

關(guān)于代理隅津,還需要說一點(diǎn)時(shí),使用urllib.open()時(shí)默認(rèn)會(huì)使用系統(tǒng)環(huán)境變量http_proxy設(shè)置的代理

返回值

urllib.open()的返回值的一些方法與操作本地文件一樣劲室。如

import urllib

url = 'http://www.baidu.com'
res = urllib.urlopen(url)
# 讀取所有內(nèi)容
print res.read()

# 讀取一行內(nèi)容
print res.readline()

# 按行讀取伦仍,返回一個(gè)列表
print res.readlines()

# 讀取文件描述符(類似shell腳本里錯(cuò)誤重定向里的0, 1, 2)
print res.fileno()

# 獲取返回的地址, 請(qǐng)求的鏈接可能被重定向過
print res.geturl()

# 獲取請(qǐng)求獲取的http狀態(tài)碼
print res.getcode()

# 返回請(qǐng)求的headers信息,類似curl -I 命令
print res.info()

下載網(wǎng)頁

import urllib

# 保存網(wǎng)頁內(nèi)容到文件
url = 'http://www.baidu.com'
filename, headers = urllib.urlretrieve(url, '/tmp/baidu.html')
print filename
print headers
# 清理之前調(diào)用urlretrieve的緩存信息
urllib.urlcleanup()

url編碼解碼

對(duì)字符串進(jìn)行URL編碼

# quote對(duì)字符串進(jìn)行編碼
print urllib.quote('abc def')  # abc%20def

# safe參數(shù)指定不需要編碼的字符, 默認(rèn)值是'/'
print urllib.quote('http://www.baidu.com')  # http%3A//www.baidu.com
print urllib.quote('http://www.baidu.com', safe=':/')  # http://www.baidu.com
print urllib.quote('example@foxmail.com', safe=':/')  # example%40foxmail.com

# quote_plus跟quote一樣,只是把空格轉(zhuǎn)換成"+"
print urllib.quote_plus('abc def')  # abc+def

# unquote對(duì)字符串進(jìn)行解碼, 與quote作用相反
print urllib.unquote("http%3A//www.baidu.com") # http://www.baidu.com
print urllib.unquote_plus("abc+def") # abc def


# urlencode將字典或元祖序列轉(zhuǎn)換成字符串 
print urllib.urlencode({"name": 'xxx', 'age': [10, 11]}, doseq=0) # age=%5B10%2C+11%5D&name=xxx

print urllib.urlencode((("name", 'xxx'), ('age', [10,11])))

# doseq參數(shù)表示是否把列表解析為重復(fù)的參數(shù)
print urllib.urlencode({"name": 'xxx', 'age': [10, 11]}, doseq=1) # age=10&age=11&name=xxx

# 查看當(dāng)前使用的代理
print urllib.getproxies()

一些例子

GET請(qǐng)求

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
>>> print f.read()

POST請(qǐng)求

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()

使用代理

>>> import urllib
>>> proxies = {'http': 'http://proxy.example.com:8080/'}
>>> opener = urllib.FancyURLopener(proxies)
>>> f = opener.open("http://www.python.org")
>>> f.read()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末很洋,一起剝皮案震驚了整個(gè)濱河市充蓝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖谓苟,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官脓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涝焙,警方通過查閱死者的電腦和手機(jī)卑笨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仑撞,“玉大人湾趾,你說我怎么就攤上這事∨刹荩” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵铛楣,是天一觀的道長(zhǎng)近迁。 經(jīng)常有香客問我,道長(zhǎng)簸州,這世上最難降的妖魔是什么鉴竭? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮岸浑,結(jié)果婚禮上搏存,老公的妹妹穿的比我還像新娘。我一直安慰自己矢洲,他們只是感情好璧眠,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布罚随。 她就那樣靜靜地躺著蝌借,像睡著了一般。 火紅的嫁衣襯著肌膚如雪星虹。 梳的紋絲不亂的頭發(fā)上盖桥,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天灾螃,我揣著相機(jī)與錄音,去河邊找鬼揩徊。 笑死腰鬼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塑荒。 我是一名探鬼主播熄赡,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼袜炕!你這毒婦竟也來了本谜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤偎窘,失蹤者是張志新(化名)和其女友劉穎乌助,沒想到半個(gè)月后溜在,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡他托,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年掖肋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赏参。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡志笼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出把篓,到底是詐尸還是另有隱情纫溃,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布韧掩,位于F島的核電站紊浩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疗锐。R本人自食惡果不足惜坊谁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滑臊。 院中可真熱鬧口芍,春花似錦、人聲如沸雇卷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聋庵。三九已至膘融,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祭玉,已是汗流浹背氧映。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脱货,地道東北人岛都。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像振峻,于是被迫代替她去往敵國(guó)和親臼疫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理扣孟,服務(wù)發(fā)現(xiàn)烫堤,斷路器,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識(shí)體系必須貫穿數(shù)據(jù)獲取鸽斟、數(shù)據(jù)存儲(chǔ)拔创、數(shù)據(jù)提取、數(shù)據(jù)分析富蓄、數(shù)據(jù)挖掘剩燥、...
    whenif閱讀 18,079評(píng)論 45 523
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,372評(píng)論 6 152
  • 就在剛剛立倍,我將兩季《媽媽是超人》節(jié)目追完灭红,心中頗有感觸,便寫下此文口注。 有什么樣的媽媽就有什么的孩子变擒。兩季節(jié)目,八位...
    杏花林閱讀 577評(píng)論 0 0
  • 急救俠告訴你,如何安全跑馬拉松 從跑步到跑馬拉松澈段,從急救跑者到專門的急救保障志愿者,從一個(gè)賽事的參與者轉(zhuǎn)變成為一名...
    赤腳急救俠閱讀 940評(píng)論 0 0