一. 挖掘和分析—《無問西東》的豆瓣評論熱詞

經(jīng)過一天一夜的奮戰(zhàn)(有點夸張),終于把這個東西搞定了就轧,期間遇到了很多困難(后面會慢慢展開),不過田度,睿智(蠢笨)如我妒御,在各大博客和蛇崽兄弟的指導下,終于完成了這一切镇饺。為了不讓大家重蹈覆轍乎莉,我將整個過程都記錄了下來,嗯奸笤,共勉惋啃。

Tools & Background

目標:在豆瓣上取得所有《無問西東》的有價值的評論,并整理分析得出評價中最常用的詞匯成圖揭保。
IOS
Python3
PyCharm
Scrapy(xpath)

結(jié)巴分詞
matplotlib
wordcloud
基本的網(wǎng)絡(luò)交互知識(這里附上一個比較全面但不完整的介紹

Grab info

  1. 熟悉Scrapy肥橙,并在PyCharm中創(chuàng)建框架。
    在 pyCharm的terminal里秸侣,
    用 'scrapy startproject object_name' 創(chuàng)建scrapy項目 這里object_name用douban
    用'scrapy crawl name' 作為測試命令存筏, 這里name用 dongxi_comment
    Attention:有的時候因為創(chuàng)建文件的層次不同,需要用cd命令返回上一層味榛。(compiler會提示你)

  2. 創(chuàng)建一個基本類椭坚,調(diào)試setting參數(shù)。


    name是必須的搏色,上面提到的測試命令就是用的這個name善茎,代表這個爬蟲程序。(可以隨便绕到巍)
    starts_urls是必須的垂涯,因為這個就相當于我們爬的起點烁焙。

在scrapy的官方tutorial里,這些就夠了耕赘,甚至不需要發(fā)起request骄蝇,因為這個框架可以自動識別然后調(diào)用接下來的parse函數(shù)〔俾猓看起來很方便九火,但是如果要對一些默認的設(shè)置進行修改或者,做一些預(yù)處理册招,這個就很麻煩了岔激,或許可以在setting里設(shè)置,但是預(yù)處理就做不到了(后面會提到)是掰。所以我這里不會按照官文的格式虑鼎,但也不會差太多。

page: 用來記錄一共爬了多少頁冀惭。
cookie:防止因為登錄需要而被限制的參數(shù)震叙。
headers:模擬瀏覽器發(fā)生請求的參數(shù)。
這上面兩個參數(shù)都是從瀏覽器中得到(如何得到)散休,cookie比較特殊媒楼,因為這里得到的值很不規(guī)范,服務(wù)器不能識別戚丸,所以后面有一個處理

  1. start_requests 函數(shù)設(shè)置


整個函數(shù)分為3個部分:
A. 對cookie的預(yù)處理(引用來源
B. 創(chuàng)建文件夾和路徑切換
C. 發(fā)起第一次請求(需要改變的參數(shù)划址,才寫到括號里,否則都是默認參數(shù)值)限府。

  1. 主函數(shù)設(shè)置


A. 先確定目標網(wǎng)站的HTML架構(gòu)夺颤,學習過最好,這樣可以很快定位數(shù)據(jù)位置胁勺。如圖世澜,先定位到div(class=comment),方便后面提取這個區(qū)間的數(shù)據(jù)


藍色就是目標

B. 接著署穗,打開一個新的txt寥裂,注意參數(shù)(a+),表示沒有相應(yīng)的文件就創(chuàng)建案疲,有就續(xù)寫封恰。注意,所有的寫入都應(yīng)該在with這個block里完成褐啡,程序一旦離開該block诺舔,則文件自動close。

C. 因為這里有二十個comments,所以我們要用一個for循環(huán)低飒,同時記錄贊同的數(shù)據(jù)量许昨,少于10,則不在數(shù)據(jù)收集范圍逸嘀,同時取評論時間车要,方便后期數(shù)據(jù)分析。
Attention:這里有個坑崭倘!大家注意定位評論時間的class屬性:網(wǎng)頁上顯示為“comment-time ”,不是“comment-time”类垫,你要問我有什么區(qū)別司光?time后面有個空格啊Oせ肌2屑摇! 在這里卡了一個小時售躁,不說了坞淮,哭去。

<span class="comment-time " title="2018-01-12 22:51:11">
                    2018-01-12
                </span>

D. 最后一部分就是對下一頁url的提取陪捷,這里有兩種方法回窘,一種就是上圖中看到的:先取點得到一個殘缺的url,再加上缺失的部分市袖。用Request發(fā)起一次新的請求啡直。
還有一種就是利用response.follow,該函數(shù)可以直接補充相應(yīng)url缺失的部分苍碟,如圖


follow

大家肯定也看到了酒觅,這里用的是yield,而不是return微峰,為什么不用return舷丹,因為用了會報錯啊,開個玩笑蜓肆,這里有yield的相關(guān)資料哦颜凯!關(guān)于follow更多可以在官網(wǎng)找到

Lookback

有一些坑在文中已經(jīng)提到過了,那么還有什么呢症杏?

  1. 爬取中文時装获,pyCharm的self.log()打印出來的都是Unicode(在另一種編碼規(guī)則下),也就是你我都看不懂厉颤。穴豫。。但不是亂碼,雖然看不懂精肃,但是output到txt file里(或者數(shù)據(jù)庫)是可以被認識的(在UTF-8的編碼規(guī)則下)秤涩。知乎解釋

  2. 輸出到具體某個文件時(txt),我用了python3 的open()司抱,close()筐眷,總是會出現(xiàn)失敗,具體error忘了截圖习柠,大概是Unicode和Ascii的沖突吧匀谣。所以我就用到了with,它不用手動close资溃,我之前好像提到過哈武翎。

  3. 差點忘記這里有一個巨坑,如下圖



    乍一看溶锭,這個紅色處調(diào)用是沒有問題的宝恶,但是實際執(zhí)行的時候,是被忽略掉的趴捅。我以為response可以作為一個參數(shù)進行傳遞垫毙,但是實際上好像不行。
    那怎么做呢拱绑?
    再發(fā)起一次請求综芥,利用callback調(diào)用函數(shù)。

抓取結(jié)果

Process

  1. 先導入數(shù)據(jù)欺栗。
  2. 結(jié)巴分詞處理毫痕,不用擔心數(shù)字,它會自動過濾迟几。
  3. wordcloud可以用pip直接下載(至少mac可以)消请,因為它不支持中文顯示,所以要自己設(shè)置中文字體类腮。關(guān)于wordcloud的參數(shù)這里有
  4. 最后就是展示圖片了臊泰,用到了常用的數(shù)據(jù)處理包—matplotlib。

Outcome

想那次哭的稀里嘩啦蚜枢,也就是三個月前缸逃,不多說了,上圖厂抽。


無問東西的評論熱詞

眼看都要天黑了需频,去跑步了啦。

彩蛋?攴铩U蜒场0摺!

這里推薦我在編程過程中循環(huán)聽的歌:
辻詩音的《I am beautiful》
Nylas的《廢物曬太陽》
徐秉龍的《白羊》
馮提莫的《佛系少女》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挪丢,一起剝皮案震驚了整個濱河市蹂风,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乾蓬,老刑警劉巖惠啄,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異任内,居然都是意外死亡撵渡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門死嗦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姥闭,“玉大人,你說我怎么就攤上這事越走。” “怎么了靠欢?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵廊敌,是天一觀的道長。 經(jīng)常有香客問我门怪,道長骡澈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任掷空,我火速辦了婚禮肋殴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坦弟。我一直安慰自己护锤,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布酿傍。 她就那樣靜靜地躺著烙懦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赤炒。 梳的紋絲不亂的頭發(fā)上氯析,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音莺褒,去河邊找鬼掩缓。 笑死,一個胖子當著我的面吹牛遵岩,可吹牛的內(nèi)容都是我干的你辣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绢记!你這毒婦竟也來了扁达?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蠢熄,失蹤者是張志新(化名)和其女友劉穎跪解,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體签孔,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡叉讥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饥追。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片图仓。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖但绕,靈堂內(nèi)的尸體忽然破棺而出救崔,到底是詐尸還是另有隱情,我是刑警寧澤捏顺,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布六孵,位于F島的核電站,受9級特大地震影響幅骄,放射性物質(zhì)發(fā)生泄漏劫窒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一拆座、第九天 我趴在偏房一處隱蔽的房頂上張望主巍。 院中可真熱鬧,春花似錦挪凑、人聲如沸孕索。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檬果。三九已至,卻和暖如春唐断,著一層夾襖步出監(jiān)牢的瞬間选脊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工脸甘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恳啥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓丹诀,卻偏偏與公主長得像钝的,于是被迫代替她去往敵國和親翁垂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理硝桩,服務(wù)發(fā)現(xiàn)沿猜,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,665評論 0 7
  • (一本關(guān)于監(jiān)獄的懸疑小說) 一 需要值班的阿祥開著自己的車子疾馳在路上碗脊,一個一年一次的大會啼肩,與自己這樣一個百...
    茂林中的林閱讀 368評論 3 1
  • 0427晨讀 別人的“靈光一閃”總會發(fā)現(xiàn)一些我們想不到的好想法,別人總會在我們不知道的角落里發(fā)現(xiàn)了一個新的知識點...
    三月Zoro君閱讀 287評論 0 0
  • 現(xiàn)在衙伶,最煩接到中介電話祈坠,不是問你是否有房賣,就是問你是否要買房矢劲,總之赦拘,繞不開房子了就是,張口閉口全是房芬沉,與人聊天躺同,...
    易水寒一x閱讀 311評論 0 0