最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python爬蟲實戰(zhàn)之最簡單的網(wǎng)頁爬蟲教程

 更新時間:2017年08月13日 10:08:49   作者:xiaomi  
在我們?nèi)粘I暇W(wǎng)瀏覽網(wǎng)頁的時候,經(jīng)常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設(shè)計的素材。下面這篇文章就來給大家介紹了關(guān)于利用python實現(xiàn)最簡單的網(wǎng)頁爬蟲的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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

1.開發(fā)工具

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

sublime text3搭建python開發(fā)環(huán)境推薦查看這篇文章:

[sublime搭建python開發(fā)環(huán)境][http://m.fzitv.net/article/51838.htm]

2.爬蟲介紹

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

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

(1)協(xié)議:如我們在網(wǎng)址中常見的HTTP協(xié)議。

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

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

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

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

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

爬蟲代碼如下:

from urllib import request

def 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()

結(jié)果如下圖:


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

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

代碼如下:

from urllib import request

def 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()

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

(3)錯誤處理

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

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

處理HTTPError的代碼如下:

from urllib import request
from urllib import error

def 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()

運行結(jié)果如圖:

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

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

chuliHTTPError的代碼如下:

from urllib import request
from urllib import error

def 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()

運行結(jié)果如圖:


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

代碼如下:

from urllib import request
from urllib import error

# 第一種方法,URLErroe和HTTPError
def 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來查看各種錯誤的輸出形式。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

抚顺县| 黎城县| 定安县| 罗定市| 伊吾县| 嘉禾县| 镇平县| 保康县| 当阳市| 博兴县| 库车县| 庄河市| 永川市| 建阳市| 贵定县| 本溪| 浦北县| 城口县| 元江| 浦城县| 莱阳市| 鹤山市| 萨迦县| 翁牛特旗| 石屏县| 喀什市| 浮山县| 桦南县| 汤阴县| 益阳市| 哈巴河县| 清流县| 昆明市| 揭东县| 汕头市| 渝北区| 隆回县| 福清市| 霍林郭勒市| 镇巴县| 潼南县|