一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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

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

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

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

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

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

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

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

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

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

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

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

#發(fā)起請求使用urllib庫的request請求模塊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é)果如下,由于篇幅過長,此處只做了簡單顯示:

<!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]

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

import urllib.request# urlopen()向URL發(fā)請求,返回響應(yīng)對象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]

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

    常用方法

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

    1)urlopen()

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

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

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

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

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

    2)Request()

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

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

    參數(shù)說明如下:

    url:請求的URL地址。

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

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

bytes = response.read() # read()返回結(jié)果為 bytes 數(shù)據(jù)類型string = response.read().decode() # decode()將字節(jié)串轉(zhuǎn)換為 string 類型url = response.geturl() # 返回響應(yīng)對象的URL地址code = response.getcode() # 返回請求時(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條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美野外在线刺激在线观看| 91在线爽的少妇嗷嗷叫| 偷拍偷窥女厕一区二区视频| 十八禁日本一区二区三区| 欧洲一级片一区二区三区| 91欧美日韩中在线视频| 欧美一区二区三区高潮菊竹| 亚洲国产欧美精品久久| 午夜国产福利在线播放| 老司机精品线观看86| 微拍一区二区三区福利| 国产福利一区二区三区四区| 色无极东京热男人的天堂| 日韩一区二区免费在线观看| 嫩呦国产一区二区三区av| 亚洲精品中文字幕熟女| 中文字幕人妻综合一区二区 | 可以在线看的欧美黄片| 精品国模一区二区三区欧美| 国产av熟女一区二区三区四区| 亚洲一区二区亚洲日本| 久久本道综合色狠狠五月| 丰满熟女少妇一区二区三区| 丰满人妻熟妇乱又伦精另类视频| 五月天丁香亚洲综合网| 日本少妇中文字幕不卡视频 | 91久久精品中文内射| 国产丝袜女优一区二区三区| 成人午夜激情免费在线| 男生和女生哪个更好色| 精品国产亚洲区久久露脸| 日本一级特黄大片国产| 成人欧美精品一区二区三区| 91久久国产福利自产拍| 黑人粗大一区二区三区| 少妇淫真视频一区二区| 日本在线不卡高清欧美| 久久亚洲成熟女人毛片| 九九热精彩视频在线免费| 视频在线观看色一区二区| 五月婷婷六月丁香亚洲|