一、爬蟲與數(shù)據(jù)
(一)為什么要做爬蟲
都說(shuō)現(xiàn)在是大數(shù)據(jù)時(shí)代,但是與之相對(duì)應(yīng)的問(wèn)題是,大數(shù)據(jù)中的數(shù)據(jù)從何而來(lái)。可以人工收集數(shù)據(jù),但是人工收集數(shù)據(jù)的效率卻免不了太過(guò)低下。也可以找一些專門從事數(shù)據(jù)服務(wù)的公司進(jìn)行購(gòu)買,但會(huì)花費(fèi)不菲的代價(jià)。下面是經(jīng)常用到的一些數(shù)據(jù)類的網(wǎng)站。
1、 企業(yè)產(chǎn)生的用戶數(shù)據(jù):
百度指數(shù): http://index.baidu.com/
阿里指數(shù): https://alizs.taobao.com/
TBI 騰訊瀏覽指數(shù): http://tbi.tencent.com/
新浪微博指數(shù): http://data.weibo.com/index
2、 數(shù)據(jù)平臺(tái)購(gòu)買數(shù)據(jù):
數(shù)據(jù)堂: http://www.datatang.com/about/about-us.html
國(guó)內(nèi)數(shù)據(jù)市場(chǎng): http://www.moojnn.com/data-market/
貴陽(yáng)大數(shù)據(jù)交易所: http://trade.gbdex.com/trade.web/index.jsp
3、 政府/機(jī)構(gòu)公開的數(shù)據(jù):
中華人民共和國(guó)國(guó)家統(tǒng)計(jì)局?jǐn)?shù)據(jù): http://data.stats.gov.cn/index.htm
世界銀行公開數(shù)據(jù): http://data.worldbank.org.cn/
聯(lián)合國(guó)數(shù)據(jù): http://data.un.org/
納斯達(dá)克: http://www.nasdaq.com/zh
4、 數(shù)據(jù)管理咨詢公司:
INS(500 人, 一年產(chǎn)值 300 億)
麥肯錫: http://www.mckinsey.com.cn/
埃森哲: https://www.accenture.com/cn-zh/
艾瑞咨詢: http://www.iresearch.com.cn/
或者可以選擇招聘/做一名爬蟲工程,自己動(dòng)手尋找數(shù)據(jù)。
(二)爬蟲是什么
通俗理解:爬蟲是一個(gè)模擬人類請(qǐng)求網(wǎng)站行為的程序。可以自動(dòng)請(qǐng)求網(wǎng)頁(yè)、并數(shù)據(jù)抓取下來(lái),然后使用一定的規(guī)則提取有價(jià)值的數(shù)據(jù)。
專業(yè)解釋:網(wǎng)絡(luò)爬蟲
(三)我們需要學(xué)習(xí)什么來(lái)使用爬蟲
Python 基礎(chǔ)語(yǔ)法學(xué)習(xí)(基礎(chǔ)知識(shí))
HTML 頁(yè)面的內(nèi)容抓取(數(shù)據(jù)抓取)
HTML 頁(yè)面的數(shù)據(jù)提取(數(shù)據(jù)清洗)
Scrapy 框架以及 scrapy-redis 分布式策略(第三方框架)
爬蟲(Spider)、 反爬蟲(Anti-Spider)、 反反爬蟲(Anti-Anti-Spider)之間的斗爭(zhēng)…

三、爬蟲的種類
網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分為以下幾種類型:通用網(wǎng)絡(luò)爬蟲(General Purpose Web Crawler)、聚焦網(wǎng)絡(luò)爬蟲(Focused Web Crawler)、增量式網(wǎng)絡(luò)爬蟲(Incremental Web Crawler)、深層網(wǎng)絡(luò)爬蟲(Deep Web Crawler)。 實(shí)際的網(wǎng)絡(luò)爬蟲系統(tǒng)通常是幾種爬蟲技術(shù)相結(jié)合實(shí)現(xiàn)的。
(一) 通用爬蟲
通用網(wǎng)絡(luò)爬蟲是搜索引擎抓取系統(tǒng)(Baidu、 google、 Yahoo 等) 的重要組成部分。 主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁(yè)下載到本地, 形成一個(gè)互聯(lián)網(wǎng)內(nèi)容的鏡像備份。
(二) 通用搜索引擎(Search Engine) 工作原理
通用網(wǎng)絡(luò)爬蟲 從互聯(lián)網(wǎng)中搜集網(wǎng)頁(yè), 采集信息, 這些網(wǎng)頁(yè)信息用于為搜索引擎建立索引從而提供支持, 它決定著整個(gè)引擎系統(tǒng)的內(nèi)容是否豐富, 信息是否及時(shí), 因此其性能的優(yōu)劣直接影響著搜索引擎的效果。
第一步: 抓取網(wǎng)頁(yè)
搜索引擎網(wǎng)絡(luò)爬蟲的基本工作流程如下:
首先選取一部分的種子 URL, 將這些 URL 放入待抓取 URL 隊(duì)列;
取出待抓取 URL, 解析 DNS 得到主機(jī)的 IP, 并將 URL 對(duì)應(yīng)的網(wǎng)頁(yè)下載下來(lái), 存儲(chǔ)進(jìn)已下載網(wǎng)頁(yè)庫(kù)中, 并且將這些 URL 放進(jìn)已抓取 URL 隊(duì)列。
分析已抓取 URL 隊(duì)列中的 URL, 分析其中的其他 URL, 并且將 URL 放入待抓取 URL隊(duì)列, 從而進(jìn)入下一個(gè)循環(huán)…
那么, 搜索引擎如何獲取一個(gè)新網(wǎng)站的 URL:
(1) 新網(wǎng)站向搜索引擎主動(dòng)提交網(wǎng)址:(如百度 http://zhanzhang.baidu.com/linksubmit/url)
(2) 在其他網(wǎng)站上設(shè)置新網(wǎng)站外鏈(盡可能處于搜索引擎爬蟲爬取范圍)
(3) 搜索引擎和 DNS 解析服務(wù)商(如 DNSPod 等) 合作, 新網(wǎng)站域名將被迅速抓取。
但是搜索引擎蜘蛛的爬行是被輸入了一定的規(guī)則的, 它需要遵從一些命令或文件的內(nèi)
容, 如標(biāo)注為 nofollow 的鏈接, 或者是 Robots 協(xié)議。
Robots 協(xié)議(也叫爬蟲協(xié)議、 機(jī)器人協(xié)議等) , 全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol) , 網(wǎng)站通過(guò) Robots 協(xié)議告訴搜索引擎哪些頁(yè)面可以抓取, 哪些頁(yè)面不能抓取, 例如:
淘寶網(wǎng): https://www.taobao.com/robots.txt
騰訊網(wǎng): http://www.qq.com/robots.txt
第二步: 數(shù)據(jù)存儲(chǔ)
搜索引擎通過(guò)爬蟲爬取到的網(wǎng)頁(yè), 將數(shù)據(jù)存入原始頁(yè)面數(shù)據(jù)庫(kù)。 其中的頁(yè)面數(shù)據(jù)與用戶瀏覽器得到的 HTML 是完全一樣的。
搜索引擎蜘蛛在抓取頁(yè)面時(shí), 也做一定的重復(fù)內(nèi)容檢測(cè), 一旦遇到訪問(wèn)權(quán)重很低的網(wǎng)站上有大量抄襲、 采集或者復(fù)制的內(nèi)容, 很可能就不再爬行。
第三步: 預(yù)處理
搜索引擎將爬蟲抓取回來(lái)的頁(yè)面, 進(jìn)行各種步驟的預(yù)處理。
提取文字
中文分詞
消除噪音(比如版權(quán)聲明文字、 導(dǎo)航條、 廣告等……)
索引處理
鏈接關(guān)系計(jì)算
特殊文件處理
···

除了 HTML 文件外, 搜索引擎通常還能抓取和索引以文字為基礎(chǔ)的多種文件類型, 如
PDF、 word、 wps、 XLS、 PPT、 TXT 文件等。 我們?cè)谒阉鹘Y(jié)果中也經(jīng)常會(huì)看到這些文件類型。
但搜索引擎還不能處理圖片、 視頻、 Flash 這類非文字內(nèi)容, 也不能執(zhí)行腳本和程序。
第四步: 提供檢索服務(wù), 網(wǎng)站排名
搜索引擎在對(duì)信息進(jìn)行組織和處理后, 為用戶提供關(guān)鍵字檢索服務(wù), 將用戶檢索相關(guān)的信息展示給用戶。
同時(shí)會(huì)根據(jù)頁(yè)面的 PageRank 值(鏈接的訪問(wèn)量排名) 來(lái)進(jìn)行網(wǎng)站排名, 這樣 Rank 值高的網(wǎng)站在搜索結(jié)果中會(huì)排名較前, 當(dāng)然也可以直接使用 Money 購(gòu)買搜索引擎網(wǎng)站排名,簡(jiǎn)單粗暴。
(三) 通用性搜索引擎存在一定的局限性:
通用搜索引擎所返回的結(jié)果都是網(wǎng)頁(yè), 而大多情況下, 網(wǎng)頁(yè)里 90%的內(nèi)容對(duì)用戶來(lái)說(shuō)
都是無(wú)用的。不同領(lǐng)域、 不同背景的用戶往往具有不同的檢索目的和需求, 搜索引擎無(wú)法提供針對(duì)具體某個(gè)用戶的搜索結(jié)果。
萬(wàn)維網(wǎng)數(shù)據(jù)形式的豐富和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展, 圖片、 數(shù)據(jù)庫(kù)、 音頻、 視頻多媒體等不同數(shù)據(jù)大量出現(xiàn), 通用搜索引擎對(duì)這些文件無(wú)能為力, 不能很好地發(fā)現(xiàn)和獲取。
通用搜索引擎大多提供基于關(guān)鍵字的檢索, 難以支持根據(jù)語(yǔ)義信息提出的查詢, 無(wú)法準(zhǔn)確理解用戶的具體需求。
針對(duì)這些情況, 聚焦爬蟲技術(shù)得以廣泛使用。
(四) 聚焦爬蟲
聚焦爬蟲, 是"面向特定主題需求"的一種網(wǎng)絡(luò)爬蟲程序, 它與通用搜索引擎爬蟲的區(qū)別在于: 聚焦爬蟲在實(shí)施網(wǎng)頁(yè)抓取時(shí)會(huì)對(duì)內(nèi)容進(jìn)行處理篩選, 盡量保證只抓取與需求相關(guān)的網(wǎng)頁(yè)信息。