1 實驗?zāi)康暮鸵?/p>
爬取Curlie.org網(wǎng)站Recreation分類下所有的網(wǎng)站信息(包括標(biāo)題祠够、鏈接和網(wǎng)站介紹)
以j son形式導(dǎo)出爬取的數(shù)據(jù)
2 實驗環(huán)境
使用Python Scrapy框架爬取
本次實驗使用的Python版本為3.6.2,分別用本地電腦和云服務(wù)器進行了數(shù)據(jù)采集
3 實驗過程
3.1 初次爬取部分成功
3.1.1 最底層路徑下全部網(wǎng)站信息爬取成功
在將對具體網(wǎng)站信息(標(biāo)題、鏈接和描述)進行循環(huán)爬取之前我們先檢驗了此段代碼能否正常運行抓取到我們想要的信息底瓣。
成功爬取到該目錄下全部網(wǎng)站信息并且完整,但在description中出現(xiàn)了\r\n\t\t\r\n此類字符寞宫,后期使用.replace(' '泣崩,'')去除。
3.1.2 使用循環(huán)爬取所有小分類下網(wǎng)站部分成功
為了不讓電腦爬取響應(yīng)時間太久影響效率饼问,我們先注釋掉了爬取每個分類下具體網(wǎng)站信息的代碼部分,在循環(huán)爬取各分類的代碼中加入了打印該分類URL的代碼檢驗是否能按照要求爬取Recreation類目下所有小分類减细。
結(jié)果成功訪問了該大分類下的小分類類目匆瓜,但當(dāng)我們試圖再次執(zhí)行操作的時候,我們遇到了問題未蝌,在3.2部分中進行說明驮吱。
3.2 第二次爬取無法獲取頁面
在此執(zhí)行爬蟲的時候我們發(fā)現(xiàn)爬蟲抓回數(shù)據(jù)為0,在修改了代碼之后仍然無法解決萧吠。
隨后我們在網(wǎng)絡(luò)上查找原因發(fā)現(xiàn)是由于爬蟲頻繁的抓取操作導(dǎo)致IP被暫時封了因此無法抓取數(shù)據(jù)左冬,隨后我們積極尋找解決措施。
3.3 解決IP被封的問題
隨后我們在setting文件中加入了控制爬取速度和設(shè)置代理的代碼防止被網(wǎng)站禁掉IP纸型。
可以看到拇砰,使用了代理IP之后再次運行爬蟲又能繼續(xù)進行了。
3.4 進行再一次爬取
3.5 添加split語句
函數(shù):split()Python中有split()和os.path.split()兩個函數(shù)狰腌,具體作用如下:
split():拆分字符串除破。
通過指定分隔符對字符串進行切片,并返回分割后的字符串列表(list)
輸出當(dāng)前爬取的網(wǎng)頁的目錄琼腔。
在運行了兩小時之后瑰枫,當(dāng)前爬取到的數(shù)據(jù)量為2.73MB。預(yù)期還將爬取較長時間。
4 經(jīng)驗總結(jié)
本次爬取的是curlie.org網(wǎng)站光坝。與之前所爬取的網(wǎng)站不同的是尸诽,curlie.org是一個分類網(wǎng)站,目錄是分級的盯另;之前爬取的網(wǎng)站所列出的信息是分頁顯示的性含,因此本次爬取就要學(xué)習(xí)新的爬取方法。在爬取過程中出現(xiàn)了一個巨大的很嚴(yán)重的問題鸳惯,由于curlie.org設(shè)置了反爬機制商蕴,在運行了一次之后云服務(wù)器的IP就被封了。在手足無措之后在網(wǎng)上查了解決方法芝发,隨即設(shè)置了代理IP究恤。就本次實驗的完成情況來看,選擇深度優(yōu)先還是廣度優(yōu)先不是我們首要考慮的問題后德,能夠完整地爬取才是最重要的。還是要繼續(xù)努力學(xué)習(xí)python和scrapy框架抄腔,繼續(xù)理解信息檢索的內(nèi)涵瓢湃。
5 附錄:Recreation類目下分類架構(gòu)