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

首頁 > 編程 > Python > 正文

python爬蟲實戰之最簡單的網頁爬蟲教程

2019-11-25 15:56:32
字體:
來源:轉載
供稿:網友

前言

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。最近對python爬蟲有了強烈地興趣,在此分享自己的學習路徑,歡迎大家提出建議。我們相互交流,共同進步。話不多說了,來一起看看詳細的介紹:

1.開發工具

筆者使用的工具是sublime text3,它的短小精悍(可能男人們都不喜歡這個詞)使我十分著迷。推薦大家使用,當然如果你的電腦配置不錯,pycharm可能更加適合你。

sublime text3搭建python開發環境推薦查看這篇文章:

[sublime搭建python開發環境][//m.survivalescaperooms.com/article/51838.htm]

2.爬蟲介紹

爬蟲顧名思義,就是像蟲子一樣,爬在Internet這張大網上。如此,我們便可以獲取自己想要的東西。

既然要爬在Internet上,那么我們就需要了解URL,法號“統一資源定位器”,小名“鏈接”。其結構主要由三部分組成:

(1)協議:如我們在網址中常見的HTTP協議。

(2)域名或者IP地址:域名,如:www.baidu.com,IP地址,即將域名解析后對應的IP。

(3)路徑:即目錄或者文件等。

3.urllib開發最簡單的爬蟲

(1)urllib簡介

Module Introduce
urllib.error Exception classes raised by urllib.request.
urllib.parse Parse URLs into or assemble them from components.
urllib.request Extensible library for opening URLs.
urllib.response Response classes used by urllib.
urllib.robotparser Load a robots.txt file and answer questions about fetchability of other URLs.

(2)開發最簡單的爬蟲

百度首頁簡潔大方,很適合我們爬蟲。

爬蟲代碼如下:

from urllib import requestdef visit_baidu(): URL = "http://www.baidu.com" # open the URL req = request.urlopen(URL) # read the URL  html = req.read() # decode the URL to utf-8 html = html.decode("utf_8") print(html)if __name__ == '__main__': visit_baidu()

結果如下圖:


我們可以通過在百度首頁空白處右擊,查看審查元素來和我們的運行結果對比。

當然,request也可以生成一個request對象,這個對象可以用urlopen方法打開。

代碼如下:

from urllib import requestdef vists_baidu(): # create a request obkect req = request.Request('http://www.baidu.com') # open the request object response = request.urlopen(req) # read the response  html = response.read() html = html.decode('utf-8') print(html)if __name__ == '__main__': vists_baidu()

運行結果和剛才相同。

(3)錯誤處理

錯誤處理通過urllib模塊來處理,主要有URLError和HTTPError錯誤,其中HTTPError錯誤是URLError錯誤的子類,即HTTRPError也可以通過URLError捕獲。

HTTPError可以通過其code屬性來捕獲。

處理HTTPError的代碼如下:

from urllib import requestfrom urllib import errordef Err(): url = "https://segmentfault.com/zzz" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.HTTPError as e: print(e.code)if __name__ == '__main__': Err()

運行結果如圖:

404為打印出的錯誤代碼,關于此詳細信息大家可以自行百度。

URLError可以通過其reason屬性來捕獲。

chuliHTTPError的代碼如下:

from urllib import requestfrom urllib import errordef Err(): url = "https://segmentf.com/" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.URLError as e: print(e.reason)if __name__ == '__main__': Err()

運行結果如圖:


既然為了處理錯誤,那么最好兩個錯誤都寫入代碼中,畢竟越細致越清晰。須注意的是,HTTPError是URLError的子類,所以一定要將HTTPError放在URLError的前面,否則都會輸出URLError的,如將404輸出為Not Found。

代碼如下:

from urllib import requestfrom urllib import error# 第一種方法,URLErroe和HTTPErrordef Err(): url = "https://segmentfault.com/zzz" req = request.Request(url) try: response = request.urlopen(req) html = response.read().decode("utf-8") print(html) except error.HTTPError as e: print(e.code) except error.URLError as e: print(e.reason)

大家可以更改url來查看各種錯誤的輸出形式。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定南县| 鄂伦春自治旗| 张家港市| 濉溪县| 无棣县| 新沂市| 东乌珠穆沁旗| 灵丘县| 托克托县| 潮州市| 灵武市| 大石桥市| 镇平县| 武冈市| 砀山县| 石楼县| 图片| 灵山县| 绍兴市| 应用必备| 孝感市| 汉沽区| 阳东县| 焉耆| 广西| 衡南县| 福建省| 奉化市| 鄂尔多斯市| 社旗县| 临安市| 柯坪县| 红安县| 大连市| 永善县| 通州市| 乐至县| 昆明市| 内丘县| 宁陕县| 湟中县|