經(jīng)完全零基礎(chǔ)的人親身測(cè)試,好使,連安裝程序在內(nèi),只需5步! 三點(diǎn) 一、什么是爬蟲? 粗俗點(diǎn)說,只要你肉眼在網(wǎng)頁(yè)上看的見的數(shù)據(jù),就能同步到你自己的本機(jī)或數(shù)據(jù)庫(kù)(或excel)。這就叫爬蟲。那什么是看的見的數(shù)據(jù)呢?比如你網(wǎng)頁(yè)訪問韭菜說的微博,里面的文章啊、標(biāo)題啊、發(fā)表時(shí)間啊等等,這些都叫數(shù)據(jù)。這些數(shù)據(jù)會(huì)以某種形式存在某個(gè)地方。而這些數(shù)據(jù)的匯總下來,就是爬蟲的本質(zhì)。 二、為啥是Python? python既簡(jiǎn)單好用,又時(shí)髦,做量化的都在用,你就用就好了,可以先不管那么多。以后用多了,就會(huì)感受到它的強(qiáng)大。 三、為啥做這個(gè)教程? 之前我們用python的爬蟲程序?qū)懥藘善恼?,反響很好,分別是: (1)關(guān)上新聞聯(lián)播,聽聽民間談?wù)撝袊?guó)經(jīng)濟(jì)的真實(shí)細(xì)節(jié) (2)茅臺(tái)酒喝者不買,買者不喝?基于京東評(píng)論的爬蟲分析 很多朋友問怎么做到的,能否寫個(gè)教程,甚至有十幾位向我們重金打賞。這個(gè)東西本來也不難,我想干脆做出來分享給大家吧,就以爬去茅臺(tái)酒在京東上的評(píng)論為例,只需要5步,你就可以知其然,并知其所以然! 也請(qǐng)大家分享給更多的大家! (當(dāng)然,賞金我們都退回去了,有幾位聯(lián)系不到請(qǐng)?jiān)诤笈_(tái)速與我們的小編聯(lián)系,見尋人啟事) 分享本文至朋友圈或微信群,截圖發(fā)送給公眾號(hào)后臺(tái),即可獲取源代碼及我們對(duì)程序的逐行詳細(xì)解讀。 下載安裝運(yùn)行環(huán)境 任何一種語言,總得有一個(gè)交互環(huán)境吧(編寫和運(yùn)行程序的地方)。
你可以直接去python的官網(wǎng)下載:www.python.org。不管是哪個(gè)版本,下載這個(gè) executable installer即可。(先別著急下載,往下看) 然后在搜索windows“程序和軟件”的地方輸入“python”就會(huì)蹦出來python的交互環(huán)境,我去,回到中世紀(jì)的感覺,這就是傳說中的python shell.(翻譯:python的殼), 比python shell性能更好的交換環(huán)境有一個(gè)叫Ipython,可以在python官網(wǎng)上下載,但一樣是烏漆麻黑的交互環(huán)境,小白肯定不喜歡。 這種原始的界面看起來都太讓人頭大了。更重要的是,在python的使用過程中,我們要用到很多和金融計(jì)算有關(guān)的模塊(比如畫個(gè)圖,做個(gè)回歸分析啥的),每一個(gè)模塊都需要再安裝,太麻煩了。 于是干脆直接請(qǐng)出Anaconda,這是python的一個(gè)科學(xué)計(jì)算環(huán)境,它不僅把python需要用到的科學(xué)計(jì)算數(shù)據(jù)分析的“模塊包”包含在內(nèi),還直接內(nèi)嵌安裝了python和Ipython。也就是說,你安裝了它,就不需要在單獨(dú)安裝python和相關(guān)模塊了。 Anaconda的下載地址為:https://www./downloads#windows 首先你要右擊“我的電腦”-“屬性”查看一下你的系統(tǒng)是多少位的,再選擇安裝,建議直接上3.6版本。 更牛的是,它還自帶安裝了非常友好的python開發(fā)環(huán)境,Spyder。他可以讓我們擺脫原始大黑屏,清晰而舒暢的進(jìn)行代碼的編輯和測(cè)試。這個(gè)頁(yè)面和我之前用過的matlab非常像,所以一上手就感到很友好。大致功能分區(qū)如圖: 這個(gè)頁(yè)面的左邊是負(fù)責(zé)程序編寫。執(zhí)行程序直接點(diǎn)擊綠色小三角就可以了。右上方會(huì)對(duì)程序中產(chǎn)生的各種變量、數(shù)組等要素進(jìn)行羅列。 右下方則顯示程序的執(zhí)行結(jié)果。執(zhí)行前你可以選擇python console 或者IPython console來運(yùn)行程序,差異不是很大,我一般選擇IPython(它的運(yùn)行結(jié)果會(huì)直接在屏幕中顯示,不會(huì)單獨(dú)跳出窗口)。你也可以在這里直接寫代碼,進(jìn)行簡(jiǎn)單的編寫和測(cè)試修改。History log 里面則會(huì)顯示你在這里輸入的每一個(gè)命令記錄,反復(fù)修改時(shí)多用來復(fù)制粘貼代碼。
所以我現(xiàn)在編寫python程序,直接打開spyder就可以了。
先寫一個(gè)簡(jiǎn)單的小程序測(cè)試一下spyder怎么用。 比如股票華夏幸福(sh600340)某天的價(jià)格信息為:開盤價(jià)38.60,最高價(jià)39.87,最低價(jià)37.70,收盤價(jià)38.43。 我們可以在程序編輯頁(yè)面這么寫: 復(fù)制代碼: “import numpy as np sh600340=np.array([38.60,39.87,37.70,38.43]) print(sh600340)” 這個(gè)程序的意思是用numpy模塊創(chuàng)建一個(gè)數(shù)組叫做sh600340,用它來存儲(chǔ)華夏幸福的價(jià)格信息。這里你先不必深究每句話的意思。 寫完以后點(diǎn)擊綠色小三角按鈕執(zhí)行,會(huì)提示你保存這個(gè)py文件。 你找個(gè)位置存一下。然后程序就會(huì)執(zhí)行,結(jié)果如下: 第一步完成以后,你已經(jīng)能夠用spyder執(zhí)行一個(gè)python程序,并能夠清晰看到執(zhí)行的結(jié)果。下面就可以進(jìn)行第二步啦! 廣告位:本站推出投資趣圖發(fā)送專用賬號(hào),歡迎關(guān)注 執(zhí)行京東茅臺(tái)評(píng)論爬蟲程序 親,現(xiàn)在可以把這個(gè)程序復(fù)制到你的spyder當(dāng)中。 分享本文至朋友圈或微信群,截圖發(fā)送給公眾號(hào)后臺(tái),即可獲取源代碼及我們對(duì)程序的逐行詳細(xì)解讀。 點(diǎn)擊執(zhí)行!見證奇跡的時(shí)刻!下圖是程序執(zhí)行的過程: 執(zhí)行完畢以后,在你存放py程序的文件夾里,會(huì)出現(xiàn)一個(gè)excel文件如圖: 這個(gè)文件就是存儲(chǔ)爬蟲結(jié)果的地方。點(diǎn)擊打開看看有什么驚喜: 你可以看到。所有的信息都已經(jīng)放在這個(gè)excel文件里面啦。 到了這一步。你已經(jīng)可以自己動(dòng)手獲得京東上關(guān)于茅臺(tái)這個(gè)商品的評(píng)論數(shù)據(jù)了! 不過,你可能會(huì)問,如果我想看別的商品怎么辦?我想看天貓的數(shù)據(jù)怎么辦?我想看隨便一個(gè)網(wǎng)頁(yè)的某個(gè)數(shù)據(jù)怎么辦? 沒錯(cuò),上面這部分只是授人以魚,下面這部分我們就開始授人以漁,絕對(duì)核心干貨。 舉一反三的幾個(gè)關(guān)鍵點(diǎn) 程序里面有幾個(gè)地方是可變的,分別是: (1)程序中我向excel表格中寫入的表頭的列名哪里來的?我從數(shù)據(jù)源中讀取哪些數(shù)據(jù)向這些列中區(qū)填充?你會(huì)發(fā)現(xiàn),二者其實(shí)是一致的。 (2)我的數(shù)據(jù)來源是從哪里獲取的?就是下面的這個(gè)url連接。 整個(gè)邏輯就是, 1.我從這個(gè)URL鏈接中,找到了我想要進(jìn)行爬蟲的信息; 2.通過解析其內(nèi)容發(fā)現(xiàn),其中有content,uerclientShow等一系列信息是我想要的,于是我就創(chuàng)建了一個(gè)excel,把它的表頭(也就是0行0列開始),輸入為content,uerclientShow等一系列名稱;(對(duì)應(yīng)代碼28-38行) 3.然后我定義了一個(gè)函數(shù),這個(gè)函數(shù)可以把連接中解析出來的所有content,uerclientShow等相關(guān)內(nèi)容,按照對(duì)應(yīng)關(guān)系,寫入到excel的相應(yīng)位置(45-58行) 4.最后我以循環(huán)的方式執(zhí)行了這個(gè)函數(shù),針對(duì)一頁(yè)評(píng)論都執(zhí)行了一邊。 那么最核心的問題就變成:如何找到這個(gè)鏈接,并且解析出這些信息? 找到某個(gè)網(wǎng)頁(yè)的解析地址并替換商品 這里教大家 如何分析京東評(píng)論鏈接,因?yàn)樵蹅兊乃性u(píng)論都是基于這個(gè)鏈接地址爬出來的哦!其實(shí)呢對(duì)于非程序員來講,這段講解 對(duì)你們來說有些難了,但沒辦法。不講清楚,這個(gè)程序你就沒法做到舉一反三,我就有騙錢的嫌疑。 首先:打開京東一個(gè)商品鏈接 例如:https://item.jd.com/251837.html 其次 看F12 打開瀏覽器 調(diào)試工具。這個(gè)工具每個(gè)瀏覽器都不一樣,建議用谷歌瀏覽器,因?yàn)檫@個(gè)瀏覽器比較友好。 于是呢!你會(huì)發(fā)現(xiàn),哇。。。什么玩意! 接下來 跟我來 第一步 先點(diǎn)擊這兩個(gè):network,js 第二步 在點(diǎn)擊這個(gè):商品評(píng)論,也就是你想看的頁(yè)面 一看都是鏈接。這個(gè)其實(shí)是HTTP 請(qǐng)求協(xié)議,里面請(qǐng)求了好多。因?yàn)榫〇|評(píng)論是用異步做的,所以只有在這里面才可以看到。 隨便點(diǎn)擊一個(gè) 右面要點(diǎn)擊 response 看里面的JSON 值, 其實(shí)這里面我們可以這樣分析 你想啊, 你現(xiàn)在找的是什么啊。是不是評(píng)論啊。那評(píng)論英文單詞是什么呀。是不是comment啊那你就看這些鏈接 哪些是comment 咦 猛然 你就會(huì)發(fā)現(xiàn) 這有一個(gè)鏈接:productcommentXXX,點(diǎn)開里面的response查看,果然,里面就是所有評(píng)論的內(nèi)容的相關(guān)信息! 意不意外?。。◇@不驚喜?。?! 。沒錯(cuò) 我們程序中的的鏈接就是這么來的! 如果你想換一個(gè)商品,沒有問題!這個(gè)鏈接里面有一個(gè)productid,可以替換的嘛。 https://club.jd.com/comment/productPageComments.action?productId=251837&score=0&sortType=5&page=1&pageSize=100&isShadowSku=0&fold=1(注意:程序中最后'fold='這個(gè)地方用i代替了數(shù)字,做了一個(gè)循環(huán),fold=1代表第一頁(yè),=2代表第二頁(yè)) 這個(gè)id和直觀看上去的網(wǎng)頁(yè)鏈接是一樣的。 那我們把其他商品的id換過來就可以了。 比如:東阿阿膠。 我們把程序中的id代碼更換一下,就可以爬出東阿阿膠的相關(guān)評(píng)論了。 結(jié)果如下: 如何從地址中解析中自己想要的信息 你一定會(huì)問,程序中的表頭那些標(biāo)簽信息是怎么來的?這些都是從地址中解析出來的。 你把京東茅臺(tái)評(píng)論的解析地址放到網(wǎng)頁(yè)上打開看一下: https://club.jd.com/comment/productPageComments.action?productId=251837&score=0&sortType=5&page=1&pageSize=100&isShadowSku=0&fold=1 這里面包含了第一頁(yè)評(píng)論中的所有信息,甚至包括圖片。但是,完全沒有格式啊。到底哪些才是我們要的信息呢? 像這種這么亂的JSON ,你讓我看我也找參數(shù)很費(fèi)勁的,幸虧有很多巨人已經(jīng)意識(shí)到這些問題了 并開發(fā)一些工具例如以下這個(gè)鏈接: 復(fù)制上面的JSON到這個(gè)文本框 點(diǎn)擊校驗(yàn)。你就會(huì)發(fā)現(xiàn)JSON 被格式化了。。。沒錯(cuò)就是這么神奇 ,然后就是考驗(yàn)各位英語了。。。其實(shí)不會(huì)英語也沒關(guān)系,你就看需要什么信息,就把前面的字段復(fù)制過去就行了。 仔細(xì)觀察你會(huì)發(fā)現(xiàn),每一個(gè)評(píng)論及其相關(guān)信息,都會(huì)存在一個(gè)數(shù)組中。 你可以看看這里頭有哪些信息是你想要的,找出來。 所以我們?cè)诔绦蛑械?8-45行的表頭信息,就是從這里找來的。你自己也可以嘗試更改,留下自己想要的東西。 隨便叨叨 如果你認(rèn)真看了這個(gè)程序,并且照著做了一遍,你現(xiàn)在已經(jīng)可以從京東這個(gè)網(wǎng)站上爬取任何一個(gè)商品的數(shù)據(jù)了。下一步,你可以依葫蘆畫瓢,向天貓,微博,知乎,股吧,天天基金網(wǎng)等等各種你感興趣的網(wǎng)站進(jìn)軍?;敬笸‘?。 其他各位試驗(yàn)成功的消息。 |
|