欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

1.開發(fā)工具

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

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

[sublime搭建python開發(fā)環(huán)境][http://www.dbjr.com.cn/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)于此詳細(xì)信息大家可以自行百度。

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é)果如圖:


既然為了處理錯誤,那么最好兩個錯誤都寫入代碼中,畢竟越細(xì)致越清晰。須注意的是,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)文章

  • django 連接數(shù)據(jù)庫 sqlite的例子

    django 連接數(shù)據(jù)庫 sqlite的例子

    今天小編就為大家分享一篇django 連接數(shù)據(jù)庫 sqlite的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解Python列表extend()函數(shù)使用方法

    詳解Python列表extend()函數(shù)使用方法

    這篇文章主要介紹了Python列表extend()函數(shù)的使用方法,文章通過代碼示例介紹的非常詳細(xì),對我們學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • python調(diào)用c++傳遞數(shù)組的實例

    python調(diào)用c++傳遞數(shù)組的實例

    今天小編就為大家分享一篇python調(diào)用c++傳遞數(shù)組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python實現(xiàn)PING命令的示例代碼

    Python實現(xiàn)PING命令的示例代碼

    本文主要介紹了Python實現(xiàn)PING命令的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python Json序列化與反序列化的示例

    Python Json序列化與反序列化的示例

    這篇文章主要介紹了Python Json序列化與反序列化的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 在DigitalOcean的服務(wù)器上部署flaskblog應(yīng)用

    在DigitalOcean的服務(wù)器上部署flaskblog應(yīng)用

    這篇文章主要介紹了在DigitalOcean的服務(wù)器上部署flaskblog的方法,flaskblog是用Python的Flask開發(fā)的一個博客程序,而DigitalOcean則是大受歡迎的SSD主機(jī)提供商,需要的朋友可以參考下
    2015-12-12
  • Python使用graphviz畫流程圖過程解析

    Python使用graphviz畫流程圖過程解析

    這篇文章主要介紹了Python使用graphviz畫流程圖過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Tensorflow 合并通道及加載子模型的方法

    Tensorflow 合并通道及加載子模型的方法

    今天小編就為大家分享一篇Tensorflow 合并通道及加載子模型的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python入門之布爾值詳解

    Python入門之布爾值詳解

    Python中布爾值(Booleans)表示以下兩個值之一:True或False。本文主要介紹布爾值(Booleans)的使用,和使用時需要注意的地方,需要的可以參考一下
    2023-02-02
  • Python緩存利器之cachetools庫使用詳解

    Python緩存利器之cachetools庫使用詳解

    cachetools庫為Python提供了強(qiáng)大而靈活的緩存解決方案,通過使用不同類型的緩存和緩存裝飾器,我們可以輕松地在程序中實現(xiàn)高效的緩存機(jī)制,從而提升程序性能,本文將詳細(xì)介紹cachetools庫的基本概念和使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評論