成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

zilu / 2157人閱讀

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


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


最近對(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)潔大方,很適合我們爬蟲。
爬蟲代碼如下:
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é)果如下圖:

我們可以通過在百度首頁空白處右擊,查看審查元素來和我們的運(yùn)行結(jié)果對(duì)比。
當(dāng)然,request也可以生成一個(gè)request對(duì)象,這個(gè)對(duì)象可以用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()
運(yùn)行結(jié)果和剛才相同。
(3)錯(cuò)誤處理
錯(cuò)誤處理通過urllib模塊來處理,主要有URLError和HTTPError錯(cuò)誤,其中HTTPError錯(cuò)誤是URLError錯(cuò)誤的子類,即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()

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

404為打印出的錯(cuò)誤代碼,關(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()
運(yùn)行結(jié)果如圖:

既然為了處理錯(cuò)誤,那么最好兩個(gè)錯(cuò)誤都寫入代碼中,畢竟越細(xì)致越清晰。須注意的是,HTTPError是URLError的子類,所以一定要將HTTPError放在URLError的前面,否則都會(huì)輸出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來查看各種錯(cuò)誤的輸出形式。



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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40704.html

相關(guān)文章

  • Python

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

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

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

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

    1fe1se 評(píng)論0 收藏0
  • python

    Python裝飾器為什么難理解? 無論項(xiàng)目中還是面試都離不開裝飾器話題,裝飾器的強(qiáng)大在于它能夠在不修改原有業(yè)務(wù)邏輯的情況下對(duì)代碼進(jìn)行擴(kuò)展,權(quán)限校驗(yàn)、用戶認(rèn)證、日志記錄、性能測(cè)試、事務(wù)處理、緩存等都是裝飾器的絕佳應(yīng)用場(chǎng)景,它能夠最大程度地對(duì)代碼進(jìn)行復(fù)用。 但為什么初學(xué)者對(duì)裝飾器的理解如此困難,我認(rèn)為本質(zhì)上是對(duì)Py… Python 實(shí)現(xiàn)車牌定位及分割 作者用 Python 實(shí)現(xiàn)車牌定位及分割的實(shí)踐。 ...

    chenatu 評(píng)論0 收藏0
  • Python-爬蟲工程師-面試總結(jié)

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

    antz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<