国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python爬蟲——寫出最簡單的網頁爬蟲

zilu / 2147人閱讀

摘要:開發最簡單的爬蟲簡介開發最簡單的爬蟲百度首頁簡潔大方,很適合我們爬蟲。爬蟲代碼如下結果如下圖我們可以通過在百度首頁空白處右擊,查看審查元素來和我們的運行結果對比。


知識就像碎布,記得“縫一縫”,你才能華麗麗地亮相


最近對python爬蟲有了強烈地興趣,在此分享自己的學習路徑,歡迎大家提出建議。我們相互交流,共同進步。
1.開發工具
筆者使用的工具是sublime text3,它的短小精悍(可能男人們都不喜歡這個詞)使我十分著迷。推薦大家使用,當然如果你的電腦配置不錯,pycharm可能更加適合你。
sublime text3搭建python開發環境推薦查看此博客:
[sublime搭建python開發環境][http://www.cnblogs.com/codefish/p/4806849.html]
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 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()
結果如下圖:

我們可以通過在百度首頁空白處右擊,查看審查元素來和我們的運行結果對比。
當然,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()
運行結果和剛才相同。
(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()

運行結果如圖:

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

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()
運行結果如圖:

既然為了處理錯誤,那么最好兩個錯誤都寫入代碼中,畢竟越細致越清晰。須注意的是,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來查看各種錯誤的輸出形式。



新人初來乍到不容易,如果您覺得有那么一丟丟好的話,請不要吝嗇您的贊賞~撒花。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40704.html

相關文章

  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關。有關書籍的介紹,大部分截取自是官方介紹。但從開始,標準庫為我們提供了模塊,它提供了和兩個類,實現了對和的進一步抽象,對編寫線程池進程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進階的書, 里面介紹的基本都是高級的python用法. 對于初學python的人來說, 基礎大概也就夠用了...

    dailybird 評論0 收藏0
  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • python

    Python裝飾器為什么難理解? 無論項目中還是面試都離不開裝飾器話題,裝飾器的強大在于它能夠在不修改原有業務邏輯的情況下對代碼進行擴展,權限校驗、用戶認證、日志記錄、性能測試、事務處理、緩存等都是裝飾器的絕佳應用場景,它能夠最大程度地對代碼進行復用。 但為什么初學者對裝飾器的理解如此困難,我認為本質上是對Py… Python 實現車牌定位及分割 作者用 Python 實現車牌定位及分割的實踐。 ...

    chenatu 評論0 收藏0
  • Python-爬蟲工程師-面試總結

    摘要:內存池機制提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。為了加速的執行效率,引入了一個內存池機制,用于管理對小塊內存的申請和釋放。 注:答案一般在網上都能夠找到。1.對if __name__ == main的理解陳述2.python是如何進行內存管理的?3.請寫出一段Python代碼實現刪除一個list里面的重復元素4.Python里面如何拷貝一個對象?...

    antz 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<