摘要:開發(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. |
百度首頁簡(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
摘要:最近看前端都展開了幾場(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ǔ)大概也就夠用了...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:在這之前,還是有必要對(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,如何限速,...
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í)踐。 ...
摘要:內(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ì)象?...
閱讀 1652·2023-04-25 16:29
閱讀 959·2021-11-15 11:38
閱讀 2299·2021-09-23 11:45
閱讀 1427·2021-09-22 16:03
閱讀 2542·2019-08-30 15:54
閱讀 1205·2019-08-30 10:53
閱讀 2605·2019-08-29 15:24
閱讀 1104·2019-08-26 12:25