[人人都該懂的技術(shù)系列]用爬蟲簡化你的生活

當(dāng)你忙完一天的工作,打開豆瓣,想要找一部2010年以后,評分在9分以上的科幻片來看時,我們通常是怎么做的呢?最快的辦法也許是在百度或者知乎里搜索一下口碑好的科幻片,一個個打開其豆瓣鏈接,然后發(fā)現(xiàn)有的也許已經(jīng)看過了,有的也許評分不算特別高,有的也許太老了,折騰半個小時以后,也許好不容易找到一部自己覺得不錯的想看,才發(fā)現(xiàn),網(wǎng)上居然找不到資源……我想,此時你的心情也許是崩潰的。

“要是有一個為自己量身打造的影庫該多好?!?/p>

同樣的問題還有很多,比如我們想自動知道車市的變化情況、房產(chǎn)的變化情況,甚至股市、區(qū)塊鏈?zhǔn)袌龅淖兓闆r和跟家鄉(xiāng)有關(guān)的微博新聞等等,我們有各種各樣的想要搜集的信息,這也就是現(xiàn)在最火的詞“大數(shù)據(jù)”最初最樸素的想法和需求。想到大數(shù)據(jù),似乎這是一個唬人的詞,其實其背后的各種原理和工具都很簡單,如果能用大數(shù)據(jù)的一些工具用于我們的工作和生活,那將極大地簡化我們的工作。

那么如何獲取網(wǎng)絡(luò)上的各種信息來搭建我們的私人數(shù)據(jù)庫呢?這就需要一個工具“爬蟲(Crawler)”。

什么是爬蟲呢?百度百科的解釋很簡單:

網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機器人),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。

說白了,網(wǎng)絡(luò)爬蟲就是用來抓取網(wǎng)頁的技術(shù)和工具。

想想就感覺很復(fù)雜,會不會很麻煩呢?其實一點都不麻煩,最簡單的爬蟲只需要不到10行代碼就可以搞定。

下面我們以當(dāng)前熱播的《猩球崛起3》為例,來一起實現(xiàn)一個最簡單的爬蟲去抓取其標(biāo)題和評分信息吧。

在實際進行抓取前,我們需要一些必備的基礎(chǔ)知識,都很簡單,可以通過下面幾篇文章了解一下。

  1. 安裝Python環(huán)境,會使用Python命令行即可,可以參考廖雪峰的“安裝Python”一文。
  2. 了解HTML的基本信息,知道每一個網(wǎng)頁都是由HTML來描述的,以及HTML文檔的基本結(jié)構(gòu)是什么就好啦,可以參考w3school的HTML簡介。

一個基本的爬蟲至少包括三個步驟:抓取、分析和保存。

首先是抓取網(wǎng)頁內(nèi)容

經(jīng)常上網(wǎng)的我們都知道,每一個網(wǎng)頁都是有一個url地址的,比如www.baidu.com, www.taobao.com等。而每個網(wǎng)頁展現(xiàn)給我們的內(nèi)容,都是用HTML語言描述的,也就是說,每個網(wǎng)頁看著無論多么花哨,其本質(zhì)上都是html,用chrome瀏覽器打開每個網(wǎng)頁后,右鍵選擇查看源碼,就可以看到這個網(wǎng)頁的HTML文檔的內(nèi)容了,當(dāng)然你也可以右鍵選擇“檢查元素”來查看網(wǎng)頁內(nèi)容和HTML代碼的對應(yīng)關(guān)系。

網(wǎng)頁和html.png

那么在python中如何獲取一個網(wǎng)頁的html頁面呢?很簡單,Python為我們提供了強大的urllib2庫。

抓網(wǎng)頁.png

這樣,僅需要2行代碼,我們就拿到了這個網(wǎng)頁的html文檔,下面要做的,就是從這個html文檔中,提取我們想要的內(nèi)容啦。

其次是對網(wǎng)頁內(nèi)容進行分析,得到自己想要的信息。

其實html文檔沒什么特別的,就和我們在記事本中寫的文章一樣,只是具有很規(guī)整的格式罷了,如下圖所示,我們想要拿到電影的打分信息,分析其html文檔,我們發(fā)現(xiàn),評分信息是被class為"rating_self clearfix"的div所包含的內(nèi)容,如下圖所示,而且class叫這個名字的div就這么兩個,那就簡單啦,只要我們從html中把這個標(biāo)簽中的內(nèi)容提取出來,就能拿到我們想要的評分啦。

Snip20170921_4.png

怎么拿到具體的評分值呢?這里有很多辦法,下面我們用Python中一個非常好用的庫叫BeautifulSoup,下面我們就用BeautifulSoup來解析這個html文檔,拿到我們想要的豆瓣評分。BeautifulSoup每一步的意義和使用方法可以直接搜索和查看其官方文檔,非常簡單,這里就不再贅述。

Screen Shot 2017-09-21 at 19.41.13.png

這樣我們就拿到豆瓣評分啦。

最后,分析的結(jié)果的保存。

爬取的結(jié)果,最終想要讓我們看,一定要把結(jié)果保存下來,并以一個自己喜歡的形式展示給自己。我們可以把爬下來的數(shù)據(jù)轉(zhuǎn)換成一個網(wǎng)頁,或者轉(zhuǎn)換成一個EXCEL表格,或者最簡單的寫成普通的記事本文件,都可以。

Screen Shot 2017-09-21 at 19.42.05.png

最后附上整個過程的代碼,只需要不到10行代碼,就完成了我們的需求,后面我們可以根據(jù)自己實際的需求,給這最簡單的代碼加上其他功能,批量地爬取豆瓣上的所有電影頁面,然后做成一個完整的網(wǎng)站來展示給自己自己最終想要的結(jié)果。

相信對爬蟲技術(shù)有了一個直觀感受的你,可以嘗試用爬蟲來完成自己多年來一直沒機會實現(xiàn)的奇思妙想了吧?比如爬知乎、爬財經(jīng)網(wǎng)站、爬汽車之家、爬各種你想爬的信息~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容