国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬蟲之urllib,偽裝,超時設(shè)置,異常處理的方法

2020-02-16 00:13:31
字體:
供稿:網(wǎng)友

Urllib

1. Urllib.request.urlopen().read().decode()

返回一個二進(jìn)制的對象,對這個對象進(jìn)行read()操作,可以得到一個包含網(wǎng)頁的二進(jìn)制字符串,然后用decode()解碼成html源碼

2. urlretrieve()

將一個網(wǎng)頁爬取到本地

3. urlclearup()

清除 urlretrieve()所產(chǎn)生的緩存

4. info()

返回一個httpMessage對象,表示遠(yuǎn)程服務(wù)器的頭信息

5. getcode()

獲取當(dāng)前網(wǎng)頁的狀態(tài)碼 200代表成功,404網(wǎng)頁未找到

6. geturl()

獲取當(dāng)前爬取頁面的網(wǎng)址

示例:

from urllib import request# urlretrieve() -- 將一個網(wǎng)頁爬取到本地request.urlretrieve("http://www.baidu.com",filename="demo.html")# urlclearup() -- 清除urlretrieve()所產(chǎn)生的緩存request.urlcleanup()# info() -- 返回一個httpMessage對象,表示遠(yuǎn)程服務(wù)器的頭信息data = request.urlopen("http://www.taobao.com")print(data.info())# getcode() -- 獲取當(dāng)前網(wǎng)頁的狀態(tài)碼data.geturl()print(data.getcode())# 獲取當(dāng)前爬取頁面的網(wǎng)址print(data.geturl())

運行結(jié)果:

Server: TengineDate: Wed, 09 May 2018 09:55:16 GMTContent-Type: text/html; charset=utf-8Transfer-Encoding: chunkedConnection: closeVary: Accept-EncodingX-Snapshot-Age: 1Content-MD5: tkjcPUrHBAIt2N/YXcuwZg==Vary: Ali-Detector-Type, X-CIP-PTCache-Control: max-age=0, s-maxage=89ETag: W/"29b8-16340528168"Via: cache22.l2cm9[0,304-0,H], cache17.l2cm9[0,0], cache1.cn372[0,200-0,H], cache2.cn372[1,0]Age: 70X-Cache: HIT TCP_MEM_HIT dirn:-2:-2 mlen:-1X-Swift-SaveTime: Wed, 09 May 2018 09:54:59 GMTX-Swift-CacheTime: 36Timing-Allow-Origin: *EagleId: 3c1cf2e515258597167937091eSet-Cookie: thw=cn; Path=/; Domain=.taobao.com; Expires=Thu, 09-May-19 09:55:16 GMT;Strict-Transport-Security: max-age=31536000200https://www.taobao.com/

超時設(shè)置(timeout)

由于在實際的爬取過程中,部分網(wǎng)站可能訪問過慢,影響性能,這時我們可設(shè)置超時訪問.

示例: 如果在指定時間內(nèi)正常訪問,即輸出獲取數(shù)據(jù)的長度,如果超出指定時間,則拋出異常.

for i in range(0,10): try:  data = urllib.request.urlopen("http://www.baidu.com",timeout=0.05).read()  print(len(data)) except Exception as e:  print("出現(xiàn)異常:"+str(e))

運行結(jié)果:

114980114888114809114839114824114611出現(xiàn)異常:<urlopen error timed out>出現(xiàn)異常:<urlopen error timed out>出現(xiàn)異常:<urlopen error timed out>115003

偽裝

在爬取過程中,可能部分網(wǎng)站限制瀏覽器訪問所以為了順利達(dá)到我們的目的,我們對自己進(jìn)行偽裝.

這里我們介紹一下瀏覽器的偽裝技術(shù).

普通爬取:

from urllib import requestfile = request.urlopen("http://www.baidu.com").read().decode()

通過瀏覽器偽裝爬取數(shù)據(jù):

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吉木乃县| 洛川县| 田林县| 银川市| 西贡区| 东乡| 卢龙县| 陕西省| 介休市| 墨竹工卡县| 汾阳市| 石门县| 洛隆县| 彰化县| 翁牛特旗| 郓城县| 织金县| 湛江市| 南平市| 五常市| 赣州市| 西贡区| 调兵山市| 新野县| 绥德县| 鄂托克前旗| 景泰县| 兖州市| 贺州市| 峨眉山市| 霸州市| 邓州市| 香河县| 塔城市| 永福县| 肥东县| 邵武市| 咸宁市| 普安县| 噶尔县| 九龙坡区|