08 | 數(shù)據(jù)采集:如何自動(dòng)化采集數(shù)據(jù)沃粗?
數(shù)據(jù)采集是數(shù)據(jù)挖掘的基礎(chǔ),沒(méi)有數(shù)據(jù)键畴,挖掘也沒(méi)有意義最盅。很多時(shí)候,我們擁有多少數(shù)據(jù)源起惕,多少數(shù)據(jù)量涡贱,以及數(shù)據(jù)質(zhì)量如何,將決定我們挖掘產(chǎn)出的成果會(huì)怎樣惹想。我們需要通過(guò)多源的數(shù)據(jù)采集问词,收集到盡可能多的數(shù)據(jù)維度,同時(shí)保證數(shù)據(jù)的質(zhì)量嘀粱,這樣才能得到高質(zhì)量的數(shù)據(jù)挖掘結(jié)果激挪。我們需要針對(duì)特定的業(yè)務(wù)場(chǎng)景,選擇適合的采集工具草穆。
數(shù)據(jù)源
-
開(kāi)放數(shù)據(jù)源
開(kāi)放數(shù)據(jù)源可以從兩個(gè)維度來(lái)考慮灌灾,一個(gè)是單位的維度,比如政府悲柱、企業(yè)锋喜、高校;一個(gè)就是行業(yè)維度,比如交通嘿般、金融段标、能源等領(lǐng)域。
image.png 爬蟲(chóng)爬取
Python 編寫(xiě)爬蟲(chóng)代碼:1.使用 Requests 爬取內(nèi)容炉奴;2.使用 XPath 解析內(nèi)容;3.使用 Pandas 保存數(shù)據(jù)逼庞。
火車采集器
八爪魚(yú)
集搜客日志采集
為什么要做日志采集呢?日志采集最大的作用瞻赶,就是通過(guò)分析用戶訪問(wèn)情況赛糟,提升系統(tǒng)的性能,從而提高系統(tǒng)承載量砸逊。及時(shí)發(fā)現(xiàn)系統(tǒng)承載瓶頸璧南,也可以方便技術(shù)人員基于用戶實(shí)際的訪問(wèn)情況進(jìn)行優(yōu)化。
日志采集可以分兩種形式师逸。1.通過(guò) Web 服務(wù)器采集司倚,例如 httpd、Nginx篓像、Tomcat 都自帶日志記錄功能动知。同時(shí)很多互聯(lián)網(wǎng)企業(yè)都有自己的海量數(shù)據(jù)采集工具,多用于系統(tǒng)日志采集员辩,如 Hadoop 的 Chukwa盒粮、Cloudera 的 Flume、Facebook 的 Scribe 等屈暗,這些工具均采用分布式架構(gòu)拆讯,能夠滿足每秒數(shù)百 MB 的日志數(shù)據(jù)采集和傳輸需求。2.自定義采集用戶行為养叛,例如用 JavaScript 代碼監(jiān)聽(tīng)用戶的行為种呐、AJAX 異步請(qǐng)求后臺(tái)記錄日志等。傳感器
傳感器采集基本上是基于特定的設(shè)備弃甥,將設(shè)備采集的信息進(jìn)行收集即可爽室。
埋點(diǎn)是什么
埋點(diǎn)是日志采集的關(guān)鍵步驟,那什么是埋點(diǎn)呢淆攻?
埋點(diǎn)就是在有需要的位置采集相應(yīng)的信息阔墩,進(jìn)行上報(bào)。比如某頁(yè)面的訪問(wèn)情況瓶珊,包括用戶信息啸箫、設(shè)備信息;或者用戶在頁(yè)面上的操作行為伞芹,包括時(shí)間長(zhǎng)短等忘苛。這就是埋點(diǎn)蝉娜,每一個(gè)埋點(diǎn)就像一臺(tái)攝像頭,采集用戶行為數(shù)據(jù)扎唾,將數(shù)據(jù)進(jìn)行多維度的交叉分析召川,可真實(shí)還原出用戶使用場(chǎng)景,和用戶使用需求胸遇。
那我們要如何進(jìn)行埋點(diǎn)呢荧呐?
埋點(diǎn)就是在你需要統(tǒng)計(jì)數(shù)據(jù)的地方植入統(tǒng)計(jì)代碼,當(dāng)然植入代碼可以自己寫(xiě)纸镊,也可以使用第三方統(tǒng)計(jì)工具倍阐。我之前講到“不重復(fù)造輪子”的原則,一般來(lái)說(shuō)需要自己寫(xiě)的代碼逗威,一般是主營(yíng)核心業(yè)務(wù)收捣,對(duì)于埋點(diǎn)這類監(jiān)測(cè)性的工具,市場(chǎng)上已經(jīng)比較成熟庵楷,這里推薦你使用第三方的工具,比如友盟楣颠、Google Analysis尽纽、Talkingdata 等。他們都是采用前端埋點(diǎn)的方式童漩,然后在第三方工具里就可以看到用戶的行為數(shù)據(jù)弄贿。但如果我們想要看到更深層的用戶操作行為,就需要進(jìn)行自定義埋點(diǎn)矫膨。
總結(jié)一下差凹,日志采集有助于我們了解用戶的操作數(shù)據(jù),適用于運(yùn)維監(jiān)控侧馅、安全審計(jì)危尿、業(yè)務(wù)數(shù)據(jù)分析等場(chǎng)景。一般 Web 服務(wù)器會(huì)自帶日志功能馁痴,也可以使用 Flume 從不同的服務(wù)器集群中采集谊娇、匯總和傳輸大容量的日志數(shù)據(jù)。當(dāng)然我們也可以使用第三方的統(tǒng)計(jì)工具或自定義埋點(diǎn)得到自己想要的統(tǒng)計(jì)內(nèi)容罗晕。
09丨數(shù)據(jù)采集:如何用八爪魚(yú)采集微博上的“D&G”評(píng)論
“八爪魚(yú)”工具所見(jiàn)即所得的方式济欢,基本上不需要編寫(xiě)代碼,除了在正則表達(dá)式匹配的時(shí)候會(huì)用到 XPath小渊。
八爪魚(yú)的基本操作
- 輸入網(wǎng)頁(yè):輸入所要采集的網(wǎng)頁(yè)法褥。(必填項(xiàng))
- 設(shè)計(jì)流程:這個(gè)步驟最為關(guān)鍵,需要告訴八爪魚(yú)酬屉,如何操作頁(yè)面的半等、想要提取頁(yè)面上的哪些信息等。因?yàn)閿?shù)據(jù)條數(shù)比較多,通常你還需要翻頁(yè)酱鸭,所以要進(jìn)行循環(huán)翻頁(yè)的設(shè)置吗垮。可以使用簡(jiǎn)易采集方式凹髓,也可以采用自定義的方式烁登。
- 啟動(dòng)采集:八爪魚(yú)會(huì)提示你保存采集好的數(shù)據(jù),通常是 xlsx 或 csv 格式蔚舀。
當(dāng)使用自定義采集饵沧,就需要自己來(lái)設(shè)計(jì)采集流程,也就是采集流程中的第二步赌躺。一共分為 4 步狼牺,分別是打開(kāi)網(wǎng)頁(yè)、點(diǎn)擊元素礼患、循環(huán)翻頁(yè)是钥、提取數(shù)據(jù)。
基本步驟:
- 打開(kāi)網(wǎng)頁(yè)缅叠。所有的采集默認(rèn)第一項(xiàng)都是打開(kāi)網(wǎng)頁(yè)悄泥。所以在新建任務(wù)之后,系統(tǒng)會(huì)提示你輸入網(wǎng)址肤粱。
- 點(diǎn)擊元素弹囚。這里元素的定義比較廣泛,它可以是某個(gè)按鈕领曼,或者某個(gè)鏈接鸥鹉,也或者是某個(gè)圖片或文字。使用這個(gè)步驟是你在搜索或者提交某個(gè)請(qǐng)求庶骄。當(dāng)你點(diǎn)擊元素后毁渗,八爪魚(yú)會(huì)提示你想要達(dá)到的目的:點(diǎn)擊該按鈕、采集該元素文本单刁、還是鼠標(biāo)移到該鏈接上祝蝠。然后再選擇“點(diǎn)擊該按鈕”進(jìn)行確認(rèn)即可。如果我們點(diǎn)擊某個(gè)元素的目的是循環(huán)翻頁(yè)幻碱,或者提取數(shù)據(jù)绎狭,那么在點(diǎn)擊之后,八爪魚(yú)會(huì)確認(rèn)你的目的褥傍,你只要點(diǎn)擊相關(guān)的按鈕即可儡嘶。
- 循環(huán)翻頁(yè)。很多數(shù)據(jù)都存在翻頁(yè)的情況恍风,通常你需要找到翻頁(yè)的位置蹦狂,比如網(wǎng)頁(yè)底部的“下一頁(yè)”按鈕誓篱,點(diǎn)擊它,會(huì)提示你“循環(huán)點(diǎn)擊下一頁(yè)”凯楔、“采集該鏈接文本”還是“點(diǎn)擊該鏈接”窜骄。你需要確認(rèn)這里是進(jìn)行的“循環(huán)點(diǎn)擊下一頁(yè)”。
- 提取數(shù)據(jù)摆屯。在網(wǎng)頁(yè)上選擇你想要提取的頁(yè)面范圍邻遏,鼠標(biāo)移動(dòng)到頁(yè)面上會(huì)呈現(xiàn)藍(lán)色的陰影面積,它表明了你想提取的數(shù)據(jù)范圍虐骑。然后點(diǎn)擊鼠標(biāo)后准验,在右側(cè)選擇“采集數(shù)據(jù)”即可。
10丨Python爬蟲(chóng):如何自動(dòng)化下載王祖賢海報(bào)廷没?(不懂)
爬蟲(chóng)的流程
- 打開(kāi)網(wǎng)頁(yè)糊饱,可使用 Requests 訪問(wèn)頁(yè)面,得到服務(wù)器返回給我們的數(shù)據(jù)颠黎,這里包括 HTML 頁(yè)面以及 JSON 數(shù)據(jù)另锋。
- 提取數(shù)據(jù).,主要用到了兩個(gè)工具狭归。針對(duì) HTML 頁(yè)面砰蠢,可以使用 XPath 進(jìn)行元素定位,提取數(shù)據(jù)唉铜;針對(duì) JSON 數(shù)據(jù),可以使用 JSON 進(jìn)行解析律杠。
XPath 是 XML 的路徑語(yǔ)言潭流,實(shí)際上是通過(guò)元素和屬性進(jìn)行導(dǎo)航,幫我們定位位置柜去。它有幾種常用的路徑表達(dá)方式灰嫉。JSON 是一種輕量級(jí)的交互方式,在 Python 中有 JSON 庫(kù)嗓奢,可以讓我們將 Python 對(duì)象和 JSON 對(duì)象進(jìn)行轉(zhuǎn)換讼撒。 - 保存數(shù)據(jù)”.可以使用 Pandas 保存數(shù)據(jù),最后導(dǎo)出 CSV 文件股耽。