日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

QQ空间爬虫分享(一天可抓取 400 万条数据)

發(fā)布時(shí)間:2024/1/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QQ空间爬虫分享(一天可抓取 400 万条数据) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代碼請(qǐng)移步GitHub:QQSpider

爬蟲(chóng)功能:

QQSpider 使用廣度優(yōu)先策略爬取QQ空間中的個(gè)人信息、日志、說(shuō)說(shuō)、好友四個(gè)方面的信息,詳細(xì)可見(jiàn)數(shù)據(jù)庫(kù)說(shuō)明。
判重使用“內(nèi)存位”判重,理論上億數(shù)量級(jí)的QQ可瞬間判重,內(nèi)存只占用400M+。
爬蟲(chóng)速度可達(dá)到單機(jī)每天400萬(wàn)條數(shù)據(jù)以上(具體要考慮網(wǎng)速、網(wǎng)絡(luò)帶寬、穩(wěn)定性等原因。我在學(xué)校是400萬(wàn)+,但在公司那邊卻只有六成的速度,普通家庭網(wǎng)絡(luò)可能會(huì)更慢)。


環(huán)境、架構(gòu):

開(kāi)發(fā)語(yǔ)言:Python2.7
開(kāi)發(fā)環(huán)境:64位Windows8系統(tǒng),4G內(nèi)存,i7-3612QM處理器。
數(shù)據(jù)庫(kù):MongoDB 3.2.0
(Python編輯器:Pycharm 5.0.4;MongoDB管理工具:MongoBooster 1.1.1)

主要使用 requests 模塊抓取,部分使用 BeautifulSoup 解析。
多線程使用 multiprocessing.dummy 。
抓取 Cookie 使用 selenium 和 PhantomJS 。
判重使用 BitVector 。


使用說(shuō)明:

啟動(dòng)前配置:
MongoDB安裝好 能啟動(dòng)即可,不需要配置。
Python需要安裝以下模塊(注意官方提供的模塊是針對(duì)win32系統(tǒng)的,64位系統(tǒng)用戶在使用某些模塊的時(shí)候可能會(huì)出現(xiàn)問(wèn)題,所以盡量先找64位模塊,如果沒(méi)有64的話再去安裝32的資源):
requests、BeautifulSoup、multiprocessing、selenium、itertools、BitVector、pymongo

另外我們需要使用到 PhantomJS,這并不是 Python 的模塊,而是一個(gè)exe可執(zhí)行文件,我們可以利用它模擬瀏覽器去獲取 Cookie 。使用方法:將 phantomjs-2.0.0-windows.zip 壓縮包里面的 phantomjs.exe 放到你的 Python 目錄下就行了。


啟動(dòng)程序:

  • 進(jìn)入 myQQ.txt 寫(xiě)入QQ賬號(hào)和密碼(用一個(gè)空格隔開(kāi),不同QQ換行輸入),一般你開(kāi)啟幾個(gè)QQ爬蟲(chóng)線程,就至少需要兩倍數(shù)量的QQ用來(lái)登錄,至少要輪著登錄嘛。
  • 進(jìn)入 init_messages.py 進(jìn)行爬蟲(chóng)參數(shù)的配置,例如線程數(shù)量的多少、設(shè)置爬哪個(gè)時(shí)間段的日志,哪個(gè)時(shí)間段的說(shuō)說(shuō),爬多少個(gè)說(shuō)說(shuō)備份一次等等。
  • 運(yùn)行 init.py 文件開(kāi)啟爬蟲(chóng)項(xiàng)目。
  • 爬蟲(chóng)開(kāi)始之后首先根據(jù) myQQ.txt 里面的QQ去獲取 Cookie(以后登錄的時(shí)候直接用已有的Cookie,就不需要每次都去拿Cookie了,遇到Cookie失效也會(huì)自動(dòng)作相應(yīng)的處理)。獲取完Cookie后爬蟲(chóng)程序會(huì)去申請(qǐng)四百多兆的內(nèi)存,申請(qǐng)的時(shí)候會(huì)占用兩G左右的內(nèi)存,大約五秒能完成申請(qǐng),之后會(huì)掉回四百多M
  • 爬蟲(chóng)程序可以中途停止,下次可打開(kāi)繼續(xù)抓取。

  • 運(yùn)行截圖:

    說(shuō)說(shuō)數(shù)據(jù):

    日志數(shù)據(jù):

    好友關(guān)系數(shù)據(jù):

    個(gè)人信息數(shù)據(jù):


    數(shù)據(jù)庫(kù)說(shuō)明:

    QQSpider主要爬取QQ用戶的說(shuō)說(shuō)、日志、朋友關(guān)系、個(gè)人信息。
    數(shù)據(jù)庫(kù)分別設(shè)置 Mood、Blog、Friend、Information 四張表。

    Mood 表:
    _id:采用 “QQ_說(shuō)說(shuō)id” 的形式作為說(shuō)說(shuō)的唯一標(biāo)識(shí)。
    Co-oridinates:發(fā)說(shuō)說(shuō)時(shí)的定位坐標(biāo),調(diào)用地圖API可直接查看具體方位,可識(shí)別到在哪一棟樓。
    Comment:說(shuō)說(shuō)的評(píng)論數(shù)。
    Like:說(shuō)說(shuō)的點(diǎn)贊數(shù)。
    Mood_cont:說(shuō)說(shuō)內(nèi)容。
    PubTime:說(shuō)說(shuō)發(fā)表時(shí)間。
    QQ:發(fā)此說(shuō)說(shuō)的QQ號(hào)。
    Source:說(shuō)說(shuō)的根源(對(duì)于轉(zhuǎn)發(fā)的說(shuō)說(shuō)),采用 “QQ_說(shuō)說(shuō)id” 的形式標(biāo)識(shí)。
    Tools:發(fā)說(shuō)說(shuō)的工具(手機(jī)類(lèi)型或者平臺(tái))。
    Transfer:說(shuō)說(shuō)的轉(zhuǎn)發(fā)數(shù)。
    URL:說(shuō)說(shuō)的鏈接地址。
    isTransfered:此說(shuō)說(shuō)是否屬于轉(zhuǎn)發(fā)來(lái)的。

    Blog 表:
    _id:采用 “QQ_日志id” 的形式作為日志的唯一標(biāo)識(shí)。
    Blog_cont:日志內(nèi)容。
    Comment:日志的評(píng)論數(shù)。
    Like:日志的點(diǎn)贊數(shù)。
    PubTime:日志的發(fā)表時(shí)間。
    QQ:發(fā)此日志的QQ號(hào)。
    Share:日志的分享數(shù)。
    Source:日志的根源(對(duì)于轉(zhuǎn)發(fā)的日志),采用 “QQ_日志id” 的形式標(biāo)識(shí)。
    Title:日志的標(biāo)題。
    Transfer:日志的轉(zhuǎn)發(fā)數(shù)。
    URL:日志的鏈接地址。
    isTransfered:此日志是否屬于轉(zhuǎn)發(fā)來(lái)的。

    Friend 表:
    _id:采用 QQ 作為唯一標(biāo)識(shí)。
    Num:此QQ的好友數(shù)(僅統(tǒng)計(jì)已抓取到的)。
    Fx:朋友的QQ號(hào),x代表第幾位好友,x從1開(kāi)始逐漸迭加。

    Information 表:
    _id:采用 QQ 作為唯一標(biāo)識(shí)。
    Age:年齡。
    Birthday:出生日期。
    Blog:已發(fā)表的日志數(shù)。
    Blogs_WeGet:我們已抓取的日志數(shù)。
    Blood_type:血型。
    Career:職業(yè)。
    Company:公司。
    Company_address:公司詳細(xì)地址。
    Company_city:公司所在城市。
    Company_country:公司所在國(guó)家。
    Company_province:公司所在省份。
    Constellation:星座。
    CurrentTime:抓取當(dāng)前信息的時(shí)間(不同時(shí)間信息會(huì)不同)。
    FriendsNum:好友數(shù)(僅統(tǒng)計(jì)已抓取的)。
    Gender:性別。
    Hometown_city:故鄉(xiāng)所在城市。
    Hometown_country:故鄉(xiāng)所在國(guó)家。
    Hometown_province:故鄉(xiāng)所在省份。
    Living_city:居住的城市。
    Living_country:居住的國(guó)家。
    Living_province:居住的省份。
    Marriage:婚姻狀況。
    Message:空間留言數(shù)。
    Mood:已發(fā)表的說(shuō)說(shuō)數(shù)。
    Mood_WeGet:我們已抓取的說(shuō)說(shuō)數(shù)。
    PageView:空間總訪問(wèn)量。
    Picture:已發(fā)表的照片數(shù)(包括相冊(cè)里的照片和說(shuō)說(shuō)里的照片)。


    結(jié)語(yǔ):

    自己一個(gè)人瞎搞了一個(gè)多星期,肯定還有很多地方不規(guī)范,不夠優(yōu)化。不足之處請(qǐng)多指出!

    更新版本:《QQ空間爬蟲(chóng)分享(2016年11月18日更新)》。



    轉(zhuǎn)載請(qǐng)注明出處,謝謝!(原文鏈接:http://blog.csdn.net/bone_ace/article/details/50771839)

    總結(jié)

    以上是生活随笔為你收集整理的QQ空间爬虫分享(一天可抓取 400 万条数据)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。