小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

第一個(gè)Python爬蟲(chóng)程序

 碼農(nóng)9527 2021-10-15

    本節(jié)編寫一個(gè)最簡(jiǎn)單的爬蟲(chóng)程序,作為學(xué)習(xí)Python爬蟲(chóng)前的開(kāi)胃小菜。

    下面使用Python內(nèi)置的urllib庫(kù)獲取網(wǎng)頁(yè)的html信息。注意,urllib庫(kù)屬于Python的標(biāo)準(zhǔn)庫(kù)模塊,無(wú)須單獨(dú)安裝,它是Python爬蟲(chóng)的常用模塊。

    獲取網(wǎng)頁(yè)html信息

    1)獲取響應(yīng)對(duì)象

    向百度(http://www.baidu.com/)發(fā)起請(qǐng)求,獲取百度首頁(yè)的HTML信息,代碼如下:

#導(dǎo)包,發(fā)起請(qǐng)求使用urllib庫(kù)的request請(qǐng)求模塊import urllib.request# urlopen()向URL發(fā)請(qǐng)求,返回響應(yīng)對(duì)象,注意url必須完整response=urllib.request.urlopen('http://www.baidu.com/')
print(response)12345復(fù)制代碼類型:[python]

    上述代碼會(huì)返回百度首頁(yè)的響應(yīng)對(duì)象,其中urlopen()表示打開(kāi)一個(gè)網(wǎng)頁(yè)地址。注意:請(qǐng)求的url必須帶有http或者h(yuǎn)ttps傳輸協(xié)議。

    輸出結(jié)果,如下所示:

<http.client.HTTPResponse object at 0x032F0F90>1復(fù)制代碼類型:[python]

    上述代碼也有另外一種導(dǎo)包方式,也就是使用from,代碼如下所示:

#發(fā)起請(qǐng)求使用urllib庫(kù)的request請(qǐng)求模塊from urllib import request
response=request.urlopen('http://www.baidu.com/')
print(response)1234復(fù)制代碼類型:[python]

    2)輸出HTML信息

    在上述代碼的基礎(chǔ)上繼續(xù)編寫如下代碼:

#提取響應(yīng)內(nèi)容html = response.read().decode('utf-8')#打印響應(yīng)內(nèi)容print(html)1234復(fù)制代碼類型:[python]

    輸出結(jié)果如下,由于篇幅過(guò)長(zhǎng),此處只做了簡(jiǎn)單顯示:

<!DOCTYPE html><!--STATUS OK--> <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description" content="全球最大的中文搜索引擎、致力于讓網(wǎng)民更便捷地獲取信息,找到...">...</html>1復(fù)制代碼類型:[python]

    通過(guò)調(diào)用response響應(yīng)對(duì)象的read()方法提取HTML信息,該方法返回的結(jié)果是字節(jié)串類型(bytes),因此需要使用decode()轉(zhuǎn)換為字符串。程序完整的代碼程序如下:

import urllib.request# urlopen()向URL發(fā)請(qǐng)求,返回響應(yīng)對(duì)象response=urllib.request.urlopen('http://www.baidu.com/')# 提取響應(yīng)內(nèi)容html = response.read().decode('utf-8')# 打印響應(yīng)內(nèi)容print(html)1234567復(fù)制代碼類型:[python]

    通過(guò)上述代碼獲取了百度首頁(yè)的html信息,這是最簡(jiǎn)單、最初級(jí)的爬蟲(chóng)程序。后續(xù)我們還學(xué)習(xí)如何分析網(wǎng)頁(yè)結(jié)構(gòu)、解析網(wǎng)頁(yè)數(shù)據(jù),以及存儲(chǔ)數(shù)據(jù)等。

    常用方法

    在本節(jié)您認(rèn)識(shí)了第一個(gè)爬蟲(chóng)庫(kù)urllib,下面關(guān)于urllib做簡(jiǎn)單總結(jié)。

    1)urlopen()

    表示向網(wǎng)站發(fā)起請(qǐng)求并獲取響應(yīng)對(duì)象,如下所示:

urllib.request.urlopen(url,timeout)1復(fù)制代碼類型:[python]

    urlopen()有兩個(gè)參數(shù),說(shuō)明如下:

    url:表示要爬取數(shù)據(jù)的url地址。

    timeout:設(shè)置等待超時(shí)時(shí)間,指定時(shí)間內(nèi)未得到響應(yīng)則拋出超時(shí)異常。

    2)Request()

    該方法用于創(chuàng)建請(qǐng)求對(duì)象、包裝請(qǐng)求頭,比如重構(gòu)User-Agent(即用戶代理,指用戶使用的瀏覽器)使程序更像人類的請(qǐng)求,而非機(jī)器。重構(gòu)User-Agent是爬蟲(chóng)和反爬蟲(chóng)斗爭(zhēng)的第一步。在下一節(jié)會(huì)做詳細(xì)介紹。

urllib.request.Request(url,headers)1復(fù)制代碼類型:[python]

    參數(shù)說(shuō)明如下:

    url:請(qǐng)求的URL地址。

    headers:重構(gòu)請(qǐng)求頭。

    3)html響應(yīng)對(duì)象方法

bytes = response.read() # read()返回結(jié)果為 bytes 數(shù)據(jù)類型string = response.read().decode() # decode()將字節(jié)串轉(zhuǎn)換為 string 類型url = response.geturl() # 返回響應(yīng)對(duì)象的URL地址code = response.getcode() # 返回請(qǐng)求時(shí)的HTTP響應(yīng)碼1234復(fù)制代碼類型:[python]

    4)編碼解碼操作

#字符串轉(zhuǎn)換為字節(jié)碼string.encode("utf-8") 
#字節(jié)碼轉(zhuǎn)換為字符串bytes.decode("utf-8")

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多