如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、武邑網(wǎng)站維護(hù)、網(wǎng)站推廣。

最近準(zhǔn)備把數(shù)據(jù)分析這塊補(bǔ)一下,加上一直在聽喜馬拉雅的直播,有一個(gè)比較喜歡的主播,突然萌生了爬取喜馬拉雅所有主播信息以及打賞信息,來找一找喜馬拉雅上比較火的主播和有錢的大哥,看看這些有錢人是怎么揮霍的。

爬取信息分析

打開喜馬拉雅的主播頁(yè)面,查看人氣主播

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

第一個(gè)是喜馬拉雅好聲音,官方的賬號(hào),很多人的喜馬拉雅賬號(hào)應(yīng)該會(huì)默認(rèn)關(guān)注這個(gè)。我們看到粉絲關(guān)注數(shù)有八千多萬,實(shí)際的喜馬拉雅用戶量肯定超過這個(gè)數(shù)值,我們暫且估計(jì)可爬取數(shù)量為一億,主播頁(yè)面只顯示五50頁(yè),每頁(yè)20個(gè)用戶,我的思路是爬取顯示的主播信息,進(jìn)入主播主頁(yè)

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

爬取相關(guān)信息,然后查看粉絲信息

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

粉絲頁(yè)只顯示10頁(yè),每頁(yè)10個(gè)用戶。雖然看起來不多,但是我們可以進(jìn)行擴(kuò)展,每個(gè)粉絲點(diǎn)進(jìn)去后又是一個(gè)用戶主頁(yè),又可以爬取他的粉絲信息。就這樣一直進(jìn)行擴(kuò)展,然后使用去重處理,過濾已經(jīng)爬取過的用戶數(shù)據(jù)。

我們要爬取的數(shù)據(jù):用戶名、簡(jiǎn)介、粉絲數(shù)、關(guān)注數(shù)、聲音、專輯數(shù)。

另外還有贊賞信息需要通過APP抓取,我們先抓用戶信息吧。

爬取技術(shù)選擇

這么大量的數(shù)據(jù)爬取,優(yōu)秀的框架是必不可少的,我們就使用大名鼎鼎的scrapy框架為基礎(chǔ)來進(jìn)行爬取。另外分布式爬取也是必不可少,雖然我沒有那么多機(jī)器去做,但是我琢磨了一下,百度云、阿里云、騰訊云、華為云等一系列云服務(wù)器新用戶都有幾天試用期,這集群機(jī)器不就有了嗎?嘿嘿

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

數(shù)據(jù)庫(kù)我們使用MongoDB,因?yàn)槲覀兊臄?shù)據(jù)并不要求多精確。redis肯定是必選了。但是作為內(nèi)存數(shù)據(jù)庫(kù),占用內(nèi)存的大小這就是我們必須要考慮的。我們的去重過濾都是放在redis中的,所以必須對(duì)齊進(jìn)行優(yōu)化。具體原因請(qǐng)看:

redis存儲(chǔ)為什么必須優(yōu)化?

我先在自己機(jī)器上抓取了部分?jǐn)?shù)據(jù),查看redis中的請(qǐng)求列表和去重列表

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

從請(qǐng)求列表中的數(shù)據(jù)量可以知道下載還是比較慢的,這就是為什么我們要用分布式進(jìn)行爬取了。然后再看去重?cái)?shù)據(jù),七十五萬條。不大的數(shù)據(jù)量,但是看下內(nèi)存占用情況。

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

執(zhí)行刪除語句flushall后,再查看內(nèi)存使用情況

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化

在我8G內(nèi)存的Mac上占用260M的內(nèi)存可以忍受,但是在我那可憐的只有1G的云服務(wù)器上,卡到我都快鏈接不上了,我們可是以八千萬數(shù)據(jù)為目標(biāo)的,實(shí)際才爬取了二十多萬條有效數(shù)據(jù),去重記錄都七十多萬了,如果到了一億條數(shù)據(jù),以目前的情況來看,卡爆服務(wù)器也到不了。

本來還有一個(gè)xmla:items結(jié)構(gòu),存儲(chǔ)我們的抓取數(shù)據(jù),我把它提取到了MongoDB當(dāng)中。xmla:requests中是待爬取請(qǐng)求列表,我們爬取下載的時(shí)候這個(gè)數(shù)據(jù)量還是會(huì)逐漸減少的,至少不會(huì)無限增大。但是這個(gè)xmla:dupefilter中存取的是去重?cái)?shù)據(jù),每一次請(qǐng)求都會(huì)記錄下來,所以這個(gè)數(shù)據(jù)只會(huì)隨著我們的爬取一直增大。那么這就是我們要進(jìn)行優(yōu)化的重點(diǎn)。

下面我們來規(guī)劃一下下來要做的事情,按步驟來:

  1. docker環(huán)境安裝部署

  2. redis集群配置操作

  3. 用戶數(shù)據(jù)抓取流程分析

  4. 用戶打賞信息抓取流程分析

  5. 使用BloomFilter修改scrapy-redis,減少過濾內(nèi)存占用

  6. 反爬處理:IP代理池、User-Agent池

  7. 使用Gerapy和docker部署分布式環(huán)境

  8. 抓取數(shù)據(jù)清理,數(shù)據(jù)分析規(guī)劃

看完上述內(nèi)容,你們掌握如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享題目:如何利用scrapy進(jìn)行八千萬用戶數(shù)據(jù)爬取與優(yōu)化
網(wǎng)頁(yè)地址:http://bm7419.com/article16/iihodg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、靜態(tài)網(wǎng)站、Google虛擬主機(jī)、云服務(wù)器、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司