給大家整理了一篇 Python3學習筆記(urllib模塊的使用)

1.基本方法

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

  •     url:  需要打開的網址
    
  •     data:Post提交的數(shù)據
    
  •     timeout:設置網站的訪問超時時間
    

直接用urllib.request模塊的urlopen()獲取頁面葵腹,page的數(shù)據格式為bytes類型咖楣,需要decode()解碼,轉換成str類型忧便。

1 from urllib import request
2 response = request.urlopen(r'http://python.org/') # <http.client.HTTPResponse object at 0x00000000048BC908> HTTPResponse類型
3 page = response.read()
4 page = page.decode('utf-8')
urlopen返回對象提供方法:

  •     read() , readline() ,readlines() , fileno() , close() :對HTTPResponse類型數(shù)據進行操作
    
  •     info():返回HTTPMessage對象,表示遠程服務器返回的頭信息
    
  •     getcode():返回Http狀態(tài)碼织阳。如果是http請求袍暴,200請求成功完成;404網址未找到
    
  •     geturl():返回請求的url
    

2.使用Request

urllib.request.Request(url, data=None, headers={}, method=None)

使用request()來包裝請求,再通過urlopen()獲取頁面苛预。

復制代碼

 1 url = r'http://www.lagou.com/zhaopin/Python/?labelWords=label'
 2 headers = {
 3     'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
 4                   r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
 5     'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label',
 6     'Connection': 'keep-alive'
 7 }
 8 req = request.Request(url, headers=headers)
 9 page = request.urlopen(req).read()
10 page = page.decode('utf-8')

復制代碼
用來包裝頭部的數(shù)據:

  •     User-Agent :這個頭部可以攜帶如下幾條信息:瀏覽器名和版本號、操作系統(tǒng)名和版本號笋熬、默認語言
    
  •     Referer:可以用來防止盜鏈热某,有一些網站圖片顯示來源http://***.com,就是檢查Referer來鑒定的
    
  •     Connection:表示連接狀態(tài)胳螟,記錄Session的狀態(tài)昔馋。
    

3.Post數(shù)據

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

urlopen()的data參數(shù)默認為None,當data參數(shù)不為空的時候糖耸,urlopen()提交方式為Post秘遏。

復制代碼

 1 from urllib import request, parse
 2 url = r'http://www.lagou.com/jobs/positionAjax.json?'
 3 headers = {
 4     'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
 5                   r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
 6     'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label',
 7     'Connection': 'keep-alive'
 8 }
 9 data = {
10     'first': 'true',
11     'pn': 1,
12     'kd': 'Python'
13 }
14 data = parse.urlencode(data).encode('utf-8')
15 req = request.Request(url, headers=headers, data=data)
16 page = request.urlopen(req).read()
17 page = page.decode('utf-8')

復制代碼
urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None)

urlencode()主要作用就是將url附上要提交的數(shù)據。

復制代碼

1 data = {
2     'first': 'true',
3     'pn': 1,
4     'kd': 'Python'
5 }
6 data = parse.urlencode(data).encode('utf-8')

復制代碼
經過urlencode()轉換后的data數(shù)據為?first=true?pn=1?kd=Python嘉竟,最后提交的url為

http://www.lagou.com/jobs/positionAjax.json?first=true?pn=1?kd=Python

Post的數(shù)據必須是bytes或者iterable of bytes邦危,不能是str洋侨,因此需要進行encode()編碼

1 page = request.urlopen(req, data=data).read()
當然,也可以把data的數(shù)據封裝在urlopen()參數(shù)中

4.異常處理

復制代碼

 1 def get_page(url):
 2     headers = {
 3         'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
 4                     r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
 5         'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label',
 6         'Connection': 'keep-alive'
 7     }
 8     data = {
 9         'first': 'true',
10         'pn': 1,
11         'kd': 'Python'
12     }
13     data = parse.urlencode(data).encode('utf-8')
14     req = request.Request(url, headers=headers)
15     try:
16         page = request.urlopen(req, data=data).read()
17         page = page.decode('utf-8')
18     except error.HTTPError as e:
19         print(e.code())
20         print(e.read().decode('utf-8'))
21     return page

復制代碼

5倦蚪、使用代理

urllib.request.ProxyHandler(proxies=None)

當需要抓取的網站設置了訪問限制希坚,這時就需要用到代理來抓取數(shù)據。

復制代碼

 1 data = {
 2         'first': 'true',
 3         'pn': 1,
 4         'kd': 'Python'
 5     }
 6 proxy = request.ProxyHandler({'http': '5.22.195.215:80'})  # 設置proxy
 7 opener = request.build_opener(proxy)  # 掛載opener
 8 request.install_opener(opener)  # 安裝opener
 9 data = parse.urlencode(data).encode('utf-8')
10 page = opener.open(url, data).read()
11 page = page.decode('utf-8')
12 return page

整理不易陵且,如果覺得有所幫助裁僧,希望可以留下您的精彩言論再走。趕快為你們最喜歡的框架打Call吧慕购。

大家如果需要Python的學習資料可以加我的群:834179111聊疲,小編整理了,從Python入門零基礎到項目實戰(zhàn)的資料沪悲。歡迎還沒有找到方向的小伙伴來學習获洲。
 
本文轉自網絡 如有侵權 請聯(lián)系小編刪除

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市可训,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捶枢,老刑警劉巖握截,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烂叔,居然都是意外死亡谨胞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門蒜鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胯努,“玉大人,你說我怎么就攤上這事逢防∫杜妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵忘朝,是天一觀的道長灰署。 經常有香客問我,道長局嘁,這世上最難降的妖魔是什么溉箕? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮悦昵,結果婚禮上肴茄,老公的妹妹穿的比我還像新娘。我一直安慰自己但指,他們只是感情好寡痰,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布抗楔。 她就那樣靜靜地躺著,像睡著了一般氓癌。 火紅的嫁衣襯著肌膚如雪谓谦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天贪婉,我揣著相機與錄音反粥,去河邊找鬼。 笑死疲迂,一個胖子當著我的面吹牛才顿,可吹牛的內容都是我干的。 我是一名探鬼主播尤蒿,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郑气,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腰池?” 一聲冷哼從身側響起尾组,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎示弓,沒想到半個月后讳侨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡奏属,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年跨跨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囱皿。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡勇婴,死狀恐怖,靈堂內的尸體忽然破棺而出嘱腥,到底是詐尸還是另有隱情耕渴,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布齿兔,位于F島的核電站萨螺,受9級特大地震影響,放射性物質發(fā)生泄漏愧驱。R本人自食惡果不足惜慰技,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望组砚。 院中可真熱鬧吻商,春花似錦、人聲如沸糟红。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柒爸,卻和暖如春准浴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捎稚。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工乐横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人今野。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓葡公,卻偏偏與公主長得像,于是被迫代替她去往敵國和親条霜。 傳聞我的和親對象是個殘疾皇子催什,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容