成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python爬蟲——寫出最簡(jiǎn)單的網(wǎng)頁爬蟲

開發(fā) 后端
最近對(duì)python爬蟲有了強(qiáng)烈地興趣,在此分享自己的學(xué)習(xí)路徑,歡迎大家提出建議。我們相互交流,共同進(jìn)步。

最近對(duì)python爬蟲有了強(qiáng)烈地興趣,在此分享自己的學(xué)習(xí)路徑,歡迎大家提出建議。我們相互交流,共同進(jìn)步。

1.開發(fā)工具

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

sublime text3搭建python開發(fā)環(huán)境推薦查看此博客:

[sublime搭建python開發(fā)環(huán)境][http://www.cnblogs.com/codefish/p/4806849.html]

2.爬蟲介紹

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

既然要爬在Internet上,那么我們就需要了解URL,法號(hào)“統(tǒng)一資源定位器”,小名“鏈接”。其結(jié)構(gòu)主要由三部分組成:

(1)協(xié)議:如我們?cè)诰W(wǎng)址中常見的HTTP協(xié)議。

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

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

3.urllib開發(fā)最簡(jiǎn)單的爬蟲

(1)urllib簡(jiǎn)介

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)開發(fā)最簡(jiǎn)單的爬蟲

百度首頁簡(jiǎn)潔大方,很適合我們爬蟲。

爬蟲代碼如下:

  1. from urllib import request 
  2.  
  3. def visit_baidu(): 
  4.     URL = "http://www.baidu.com" 
  5.     # open the URL 
  6.     req = request.urlopen(URL) 
  7.     # read the URL  
  8.     html = req.read() 
  9.     # decode the URL to utf-8 
  10.     html = html.decode("utf_8"
  11.     print(html) 
  12.  
  13. if __name__ == '__main__'
  14.     visit_baidu()  

結(jié)果如下圖:

 

我們可以通過在百度首頁空白處右擊,查看審查元素來和我們的運(yùn)行結(jié)果對(duì)比。

當(dāng)然,request也可以生成一個(gè)request對(duì)象,這個(gè)對(duì)象可以用urlopen方法打開。

代碼如下:

  1. from urllib import request 
  2.  
  3. def vists_baidu(): 
  4.     # create a request obkect 
  5.     req = request.Request('http://www.baidu.com'
  6.     # open the request object 
  7.     response = request.urlopen(req) 
  8.     # read the response  
  9.     html = response.read() 
  10.     html = html.decode('utf-8'
  11.     print(html) 
  12.  
  13. if __name__ == '__main__'
  14.     vists_baidu()  

運(yùn)行結(jié)果和剛才相同。

(3)錯(cuò)誤處理

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

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

處理HTTPError的代碼如下:

  1. from urllib import request 
  2. from urllib import error 
  3.  
  4. def Err(): 
  5.     url = "https://segmentfault.com/zzz" 
  6.     req = request.Request(url) 
  7.  
  8.     try: 
  9.         response = request.urlopen(req) 
  10.         html = response.read().decode("utf-8"
  11.         print(html) 
  12.     except error.HTTPError as e: 
  13.         print(e.code) 
  14. if __name__ == '__main__'
  15.     Err()  

運(yùn)行結(jié)果如圖: 

 

404為打印出的錯(cuò)誤代碼,關(guān)于此詳細(xì)信息大家可以自行百度。

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

chuliHTTPError的代碼如下:

  1. from urllib import request 
  2. from urllib import error 
  3.  
  4. def Err(): 
  5.     url = "https://segmentf.com/" 
  6.     req = request.Request(url) 
  7.  
  8.     try: 
  9.         response = request.urlopen(req) 
  10.         html = response.read().decode("utf-8"
  11.         print(html) 
  12.     except error.URLError as e: 
  13.         print(e.reason) 
  14. if __name__ == '__main__'
  15.     Err()  

運(yùn)行結(jié)果如圖: 

 

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

代碼如下:

  1. from urllib import request 
  2. from urllib import error 
  3.  
  4. # ***種方法,URLErroe和HTTPError 
  5. def Err(): 
  6.     url = "https://segmentfault.com/zzz" 
  7.     req = request.Request(url) 
  8.  
  9.     try: 
  10.         response = request.urlopen(req) 
  11.         html = response.read().decode("utf-8"
  12.         print(html) 
  13.     except error.HTTPError as e: 
  14.         print(e.code) 
  15.     except error.URLError as e: 
  16.         print(e.reason)  

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

責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2012-05-10 13:42:26

Java網(wǎng)絡(luò)爬蟲

2010-03-09 09:32:20

Python網(wǎng)頁爬蟲

2019-12-27 18:07:53

Python網(wǎng)絡(luò)爬蟲HTML

2011-02-22 10:00:38

.NETc#IronPython

2011-02-23 09:48:00

Python.NET

2010-03-03 09:30:40

Python實(shí)現(xiàn)網(wǎng)頁爬

2020-10-19 19:25:32

Python爬蟲代碼

2011-03-18 10:25:20

javac++Python

2024-06-07 08:56:43

HTTPPythonSelenium

2022-11-24 10:24:32

2018-07-02 14:12:26

Python爬蟲反爬技術(shù)

2017-08-22 17:30:14

Python爬蟲

2024-11-27 06:31:02

2016-10-13 15:51:50

2017-06-14 15:20:43

Python爬蟲BeautifulSo

2018-01-29 09:28:44

2023-11-28 08:34:39

Python工具

2016-10-21 14:35:52

Pythonwebget方法

2016-10-20 20:21:09

Python爬蟲技巧

2019-06-18 10:49:41

Python技術(shù)web
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产网站在线免费观看 | 亚洲免费人成在线视频观看 | av中文字幕在线 | 国产免费一区二区三区最新6 | 欧美一区二区三区,视频 | 一区二区成人 | 国产精品久久久久久久久大全 | 免费在线观看成年人视频 | 国产精品一区在线观看 | 成人在线视频免费看 | 国产日韩精品一区 | 三级视频在线观看 | 欧美亚洲国产日韩 | 日韩视频在线观看一区二区 | 精品国产精品一区二区夜夜嗨 | 91av在线看 | 青青草久久| 国产一区二区在线播放 | 综合久久av| 国产成人久久精品一区二区三区 | 亚洲一区二区精品视频 | 91人人在线 | 日韩中文在线视频 | 国产精品成人一区二区 | 日韩av在线一区二区 | 中文字幕一区在线 | 精品免费在线 | 中文字幕乱码一区二区三区 | 亚洲精品福利在线 | 国产精品成人一区二区三区 | 中文字幕在线视频一区二区三区 | 成人免费精品视频 | av网站免费 | 免费观看一级特黄欧美大片 | 亚洲欧美一区二区三区国产精品 | 国产激情精品视频 | 在线免费亚洲视频 | 久久夜视频 | 亚洲欧美日韩在线 | 蜜桃视频成人 | 免费在线a视频 |