數(shù)據(jù)采集任務(wù)——爬取四川大學(xué)公共管理學(xué)院主頁(yè)新聞實(shí)驗(yàn)報(bào)告

1.實(shí)驗(yàn)?zāi)康暮鸵?br> 1.1實(shí)驗(yàn)?zāi)康?br> 爬取公共管理學(xué)院網(wǎng)站上的所有新聞,了解和熟悉網(wǎng)絡(luò)信息采集的相關(guān)技術(shù)。
1.2實(shí)驗(yàn)要求
用任何可以用的方法,爬取四川大學(xué)公共管理學(xué)院(http://ggglxy.scu.edu.cn/)上所有的新聞,包括“新聞標(biāo)題、新聞發(fā)布時(shí)間、新聞?wù)摹比齻€(gè)字段。我們嘗試過(guò)的方法有八爪魚(yú)數(shù)據(jù)采集工具、Python爬蟲(chóng)代碼。

2.實(shí)驗(yàn)環(huán)境
2.1八爪魚(yú)數(shù)據(jù)采集工具
八爪魚(yú)采集器是一個(gè)云采集服務(wù)平臺(tái),提供數(shù)據(jù)采集、數(shù)據(jù)分析等功能,是可視化的圖形操作采集器。它的基礎(chǔ)功能如簡(jiǎn)易采集、自定義采集等可以免費(fèi)使用。本次實(shí)驗(yàn)使用的是八爪魚(yú)7.0版本的自定義采集功能,采用本地采集的方法。
2.2使用Python scrapy框架爬取
本次實(shí)驗(yàn)使用的Python版本為2.7.14,安裝完成Scrapy。采用服務(wù)器采集的方法。

3.實(shí)驗(yàn)方案
3.1八爪魚(yú)采集器實(shí)驗(yàn)方案

3.1.1登錄八爪魚(yú)7.0版本,輸入網(wǎng)址,新建采集任務(wù)
新建任務(wù).png

3.1.2制作翻頁(yè)循環(huán)和每條新聞鏈接的點(diǎn)擊循環(huán)
點(diǎn)擊循環(huán).png
翻頁(yè)循環(huán).png

3.1.3規(guī)定每個(gè)新聞鏈接的具體采集規(guī)則


采集規(guī)則.png

3.1.4確定采集流程和數(shù)據(jù)


采集流程.png

采集格式預(yù)覽.png

3.1.5采集工具結(jié)果界面
采集結(jié)果.png

3.1.6錯(cuò)誤報(bào)告及補(bǔ)充采集結(jié)果
經(jīng)過(guò)我們的檢查,錯(cuò)誤報(bào)告中的網(wǎng)頁(yè)一共有四種類型:
A. 鏈接網(wǎng)頁(yè)內(nèi)部還有嵌套鏈接,如“120周年校慶”等專題網(wǎng)頁(yè)鏈接;
B. 其他格式的網(wǎng)頁(yè),如視頻、圖片、外部網(wǎng)站的鏈接等。
C. 網(wǎng)頁(yè)出錯(cuò),無(wú)法打開(kāi);
D. 是單獨(dú)的文章,但可能由于系統(tǒng)出現(xiàn)問(wèn)題或者文章格式不同(沒(méi)有標(biāo)題等)的原因,沒(méi)有爬取下來(lái)。


補(bǔ)充采集結(jié)果1.png

我們對(duì)出錯(cuò)的每個(gè)網(wǎng)頁(yè)鏈接進(jìn)行了單獨(dú)的第二次數(shù)據(jù)采集,其中圖片、視頻等B類格式的網(wǎng)頁(yè)沒(méi)有進(jìn)行采集,最終采集得到的數(shù)據(jù)結(jié)果導(dǎo)出的excel表格部分截圖如下:
補(bǔ)充采集結(jié)果2.png
最終部分采集結(jié)果.png

以上為八爪魚(yú)的部分
3.2使用Python scrapy框架爬取實(shí)驗(yàn)方案
3.2.1云服務(wù)器配置:為Python安裝scrapy
(1)檢查當(dāng)前服務(wù)器是否配置了scrapy
(2)退出Python交互,使用yum安裝scrapy和部分依賴。


安裝scrapy.png

經(jīng)查詢, 解決方法為:
vi /usr/libexec/urlgrabber-ext-down
把頭部的python改成和/usr/bin/yum中一樣的
修改完成后,再次使用yum安裝scrapy:


修改完成后再次安裝scrapy.png

3.2.2檢查scrapy安裝
進(jìn)入Python交互環(huán)境,import scrapy enter,發(fā)現(xiàn)引用成功,退出交互環(huán)境。
檢查安裝結(jié)果.png

scrapy version enter
查看scrapy版本.png

版本信息查看成功。
至此,云服務(wù)器上配置Python scrapy成功。

3.2.3編寫(xiě)代碼并進(jìn)行調(diào)試
根據(jù)之前八爪魚(yú)的經(jīng)驗(yàn)可以看出,我們需要采集的實(shí)體共有三個(gè):標(biāo)題、日期和正文(另有一個(gè)實(shí)體為圖片,暫時(shí)不做要求)。
scrapy startproject ggnews enter
cd /ggnews/ggnews enter


文件結(jié)構(gòu)1.png
文件結(jié)構(gòu)2.png

編寫(xiě)ggnews.py


編寫(xiě)ggnews.png

3.2.4輸入命令進(jìn)行爬取,得到數(shù)據(jù)
輸入scrapy crawl ggnews -o ggnews.xml
出現(xiàn)以下錯(cuò)誤


報(bào)錯(cuò)1.png

出現(xiàn)了報(bào)錯(cuò),但顯然我們代碼里面是有items這個(gè)類的。經(jīng)過(guò)查詢,這個(gè)錯(cuò)誤用簡(jiǎn)單一句話來(lái)描述就是: 爬蟲(chóng)的名字跟項(xiàng)目的名字一樣,導(dǎo)致最終導(dǎo)入的時(shí)候出錯(cuò)。
修改爬蟲(chóng)名字為spidernews.py。雖然名字長(zhǎng)了一點(diǎn),但是看起來(lái)很容易理解。
再次執(zhí)行代碼,得到文件ggnews.json


初次爬取結(jié)果.png

發(fā)現(xiàn)初次爬取的結(jié)果為Unicode編碼,并不是理想的中文格式。經(jīng)過(guò)查詢,需要修改pipelines.py和settings.py這兩個(gè)文件,使得輸出的結(jié)果為中文格式。

3.2.5修改pipelines.py和settings.py文件


修改pipelines文件.png
修改settings文件.png

3.2.6解決縮進(jìn)問(wèn)題
修改完成之后再次運(yùn)行命令scrapy crawl spidernews。又出現(xiàn)了新的問(wèn)題:


報(bào)錯(cuò)2.png

經(jīng)過(guò)查詢,這是縮進(jìn)的問(wèn)題。Python語(yǔ)言是一款對(duì)縮進(jìn)非常敏感的語(yǔ)言,給很多初學(xué)者帶來(lái)了困惑,即便是很有經(jīng)驗(yàn)的Python程序員,也可能陷入陷阱當(dāng)中。最常見(jiàn)的情況是tab和空格的混用會(huì)導(dǎo)致錯(cuò)誤,或者縮進(jìn)不對(duì),而這是用肉眼無(wú)法分別的。在編譯時(shí)會(huì)出現(xiàn)這樣的錯(cuò)“IndentationError:expected an indented block”說(shuō)明此處需要縮進(jìn),你只要在出現(xiàn)錯(cuò)誤的那一行,按空格或Tab(但不能混用)鍵縮進(jìn)就行。
修改完成,再次運(yùn)行命令


第二次爬取結(jié)果.png

得到理想的結(jié)果。
至此,使用Python scrapy框架進(jìn)行爬取的過(guò)程結(jié)束。
4.經(jīng)驗(yàn)總結(jié)
4.1八爪魚(yú)采集器的經(jīng)驗(yàn)總結(jié)

經(jīng)驗(yàn)總結(jié)
由于本次實(shí)驗(yàn)只使用了數(shù)據(jù)采集的功能,因此評(píng)價(jià)和總結(jié)只針對(duì)數(shù)據(jù)采集方面的功能。八爪魚(yú)讓數(shù)據(jù)采集可視化,在完全不懂爬蟲(chóng)代碼的情況下,八爪魚(yú)是一個(gè)比較方便的網(wǎng)絡(luò)數(shù)據(jù)采集工具。根據(jù)使用經(jīng)驗(yàn),它對(duì)公共管理學(xué)院網(wǎng)站新聞的爬取速度大概是29條/分鐘,數(shù)據(jù)可以導(dǎo)出為excel、CSV等格式。
但是,它也有一些使用限制。首先是費(fèi)用方面,它的數(shù)據(jù)導(dǎo)出是需要積分的,每10條數(shù)據(jù)一個(gè)積分,單次不足10條按10條算,用戶首次注冊(cè)后,它會(huì)贈(zèng)送2000個(gè)積分;在采集數(shù)據(jù)量很小的情況下,可以免費(fèi)使用,但是在采集數(shù)據(jù)量很大的時(shí)候,需要支付一定費(fèi)用才能導(dǎo)出數(shù)據(jù)。其次是使用方面,由于八爪魚(yú)是已經(jīng)編寫(xiě)好的采集工具,因此在采集數(shù)據(jù)時(shí)使用會(huì)受到一定的限制,可能不像直接使用代碼一樣可以比較自由地規(guī)定采集數(shù)據(jù)的規(guī)則細(xì)節(jié)(比如采集時(shí)間段、采集時(shí)長(zhǎng)等)。
4.2Python scrapy的實(shí)驗(yàn)總結(jié)
本次實(shí)驗(yàn)共爬取到407條數(shù)據(jù),然而學(xué)院新聞網(wǎng)站上共有458篇新聞。為什么會(huì)缺少了51篇,我們到現(xiàn)在還沒(méi)有找到答案,希望在接下來(lái)的學(xué)習(xí)中可以解決這一問(wèn)題!在數(shù)據(jù)采集的過(guò)程中,爬取數(shù)據(jù)的規(guī)則和方法是最最最重要的部分,一定要充分利用瀏覽器的開(kāi)發(fā)者工具,保證路徑的嚴(yán)格正確;此外是編碼問(wèn)題和分頁(yè)問(wèn)題。由于剛剛接觸python,對(duì)python的要求還不是很熟悉導(dǎo)致了修改時(shí)間很長(zhǎng),在接下來(lái)的學(xué)習(xí)中要盡快適應(yīng)python的規(guī)則。另外還有有足夠的耐心和細(xì)心,這樣才能養(yǎng)出好的爬蟲(chóng)。

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

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

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