當前位置:
首頁 > 最新 > 如果十年前擁有這些技術,你可能比馬雲還要富:python3開發網路爬蟲(一)

如果十年前擁有這些技術,你可能比馬雲還要富:python3開發網路爬蟲(一)

選擇一門語言

爬蟲可以用各種語言寫, C++, Java都可以, 為什麼要Python? 首先用C++搞網路開發的例子不多(可能是我見得太少), 然後由於Oracle收購了Sun, Java目前雖然在Android開發上很重要, 但是如果Google官司進展不順利, 那麼很有可能用Go語言替代掉Java來做Android開發. 在這計算機速度高速增長的年代裡, 選語言都要看他爹的業績, 真是稍不注意就落後於時代. 隨著計算機速度的高速發展, 某種語言開發的軟體運行的時間複雜度的常數係數已經不像以前那麼重要, 我們可以越來越偏愛為程序員打造的而不是為計算機打造的語言. 比如Ruby這種傳說中的純種而又飄逸的的OOP語言, 或者Python這種稍嚴謹而流行庫又非常多的語言, 都大大弱化了針對計算機運行速度而打造的特性, 強化了為程序員容易思考而打造的特性. 所以我選擇Python。

選擇Python版本

有2和3兩個版本, 3比較新, 聽說改動大. 根據我在知乎上搜集的觀點來看, 我還是傾向於使用」在趨勢中將會越來越火」的版本, 而非」目前已經很穩定而且很成熟」的版本. 這是個人喜好, 而且預測不一定準確. 但是如果Python3無法像Python2那麼火, 那麼整個Python語言就不可避免的隨著時間的推移越來越落後, 因此我想其實選哪個的最壞風險都一樣, 但是最好回報卻是Python3的大. 其實兩者區別也可以說大也可以說不大, 最終都不是什麼大問題. 我選擇的是Python 3。

一個簡單的偽代碼

以下這個簡單的偽代碼用到了set和queue這兩種經典的數據結構, 集與隊列. 集的作用是記錄那些已經訪問過的頁面, 隊列的作用是進行廣度優先搜索.

這個偽代碼不能執行, 覺得寫的有的不倫不類, 不類Python也不類C++.. 但是我相信看懂是沒問題的, 這就是個最簡單的BFS結構. 你可以用你的風格寫一遍.

這裡用到的Set其內部原理是採用了Hash表, 傳統的Hash對爬蟲來說佔用空間太大, 因此有一種叫做Bloom Filter的數據結構更適合用在這裡替代Hash版本的set. 我打算以後再看這個數據結構怎麼使用, 現在先跳過, 因為對於零基礎的我來說, 這不是重點.

代碼實現(一): 用Python抓取指定頁面

我使用的編輯器是Idle, 安裝好Python3後這個編輯器也安裝好了, 小巧輕便, 按一個F5就能運行並顯示結果. 代碼如下:

urllib.request是一個庫, 隸屬urllib.點此打開官方相關文檔. 官方文檔應該怎麼使用呢? 首先點剛剛提到的這個鏈接進去的頁面有urllib的幾個子庫, 我們暫時用到了request, 所以我們先看urllib.request部分. 首先看到的是一句話介紹這個庫是幹什麼用的:

然後把我們代碼中用到的urlopen()函數部分閱讀完.

重點部分是返回值, 這個函數返回一個 http.client.HTTPResponse 對象, 這個對象又有各種方法, 比如我們用到的read()方法, 這些方法都可以根據官方文檔的鏈接鏈過去. 根據官方文檔所寫, 我用控制台運行完畢上面這個程序後, 又繼續運行如下代碼, 以更熟悉這些亂七八糟的方法是幹什麼的.

代碼實現(二): 用Python簡單處理URL

如果要抓取百度上面搜索關鍵詞為Jecvay Notes的網頁, 則代碼如下

大概知道他是把一個通俗的字元串, 轉化為url格式的字元串.

未完待續........

每一位讀者都是python大牛


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 python 的精彩文章:

2017開發者生態報告:Python 是最多人想嘗試的語言
從零開始教你用 Python 做詞雲
Python 多線程雞年不雞肋
Python Web 框架介紹

TAG:python |

您可能感興趣

當貓咪玩起了無差別cosplay,這技術真是6到飛起
看到你的眼睛就能知道是否有心臟病?Verily這項新AI技術太666!
爆米花之後莆田,又一次大突破技術!Nike Epic React 沒有買到的小夥伴們,目前此配色鞋款在莆田老師這裡
小米note3與堅果Pro2之比較:有沒有AI技術差很多
有圖有真相!vivo又發布一重磅技術,把iPhone X按在地上虐
iphone沒有的屏下指紋技術,vivo做到了!vivo X20Plus新款發布
小米和vivo今年能做大,看它們發布的新技術就知道了
小米、華為這項技術將落後iPhoneX兩年,花錢也解決不了!
iphone這是要上天?蘋果成功實現尖端技術,華為三星坐不住啦
還有誰!努比亞Z18mini拍照新技術已經登峰造極,一手曝光樣張在這裡!
無人車都在路上跑,哪一家技術真的好?專訪Roadstar.ai CTO 衡量
V-Ray都開始智能了,那些浮於技術表面的人以後還有出路嗎?
這技術是iPhoneX率先採用 但現在被三星S9甩了幾條街
Lux Research:未來十年,這18項技術將改變世界
Uber涉無人車史上首例死亡車禍,Facebook數據濫用醜聞不斷發酵,是人的過錯還是技術的禍?
這個技術只有三星S9獨有 iPhoneX想模仿都很困難
Blockchain技術能否在沒有加密貨幣的情況下生存?
關於Kindle的技術帖那麼多,你為什麼還是不想用它?
Visual Computer:神技術或能通過微笑來判斷你是男是女?
技術的驅動來自「下一代」,Bosch Sensortec已為「下一代」智能產品準備就緒