1. 程式人生 > >QQ空間爬蟲分享(2016年11月18日更新)

QQ空間爬蟲分享(2016年11月18日更新)

前言:

很抱歉QQSpider這個爬蟲過了這麼久才作更新,同時也很感謝各位同學的肯定和支援!
這次主要替換了程式裡一些不可用的連結,對登入時的驗證碼作了處理,對去重佇列作了優化。並且可以非常簡單地實現爬蟲分散式擴充套件。

使用說明:

啟動前配置:

  1. 需要安裝的軟體:python、Redis、MongoDB(Redis和MongoDB都是NoSQL,服務啟動後能連線上就行,不需要建表什麼的)。
  2. 需要安裝的Python模組:requests、BeautifulSoup、multiprocessing、selenium、itertools、redis、pymongo。
  3. 我們登陸QQ要使用到phantomJS(下載地址:
    http://phantomjs.org/download.html
    ),下載完將裡面的 phantomjs.exe 解壓到python目錄下即可。

啟動程式:

  1. 進入 myQQ.txt 寫入QQ賬號和密碼(不同QQ換行輸入,賬號密碼空格隔開)。如果你只是測試一下,則放三兩個QQ足矣;但如果你開多執行緒大規模抓取的話就要用多一點QQ號(thread_num_QQ的2~10倍),賬號少容易被檢測為異常行為。
  2. 進入 init_messages.py 進行爬蟲引數的配置,例如執行緒數量的多少、設定爬哪個時間段的日誌,哪個時間段的說說,爬多少個說說備份一次等等。
  3. 執行 launch.py 啟動爬蟲。

程式碼說明:

  1. mongodb用來存放資料,redis用來存放待爬QQ和Cookie。
  2. 爬蟲之前使用的是BitVector去重,有一部分人反映經常會報錯,所以現在使用基於Redis的位去重,記憶體佔用不超過512M,能容納45億個QQ號瞬間去重,而且方便分散式擴充套件。
  3. 爬蟲使用phantomJS模擬登陸QQ空間,有時候會出現驗證碼。我使用的是雲打碼(自行百度),準確率還是非常高的,QQ驗證碼是4位純英文,5元可以識別1000個驗證碼。如果需要請自行去註冊購買,將賬號、密碼、appkey填入 yundama.py,再將 public_methods.py 裡的dama=False改成dama=True
    即可。
  4. 分散式。現在已經將種子隊列和去重佇列都放在了Redis上面,如果需要幾臺機器同時爬,只需要將程式碼複製一份到另外一臺機子,將連Redis時的localhost改成同一臺機器的IP即可。如果想要將爬下來的資料儲存到同一臺機,也只需要將連MongoDB時的localhost改成該機器的IP即可。
  5. 為了讓程式不那麼複雜難懂,此專案只用了多執行緒,即只用到了一個CPU。如果實際生產執行的話可以考慮將程式稍作修改,換成多程序+協程,或者非同步。速度會快很多。
  6. 最後提醒一下,爬蟲無非就是模仿人在瀏覽器上網的行為,你在瀏覽器上無法檢視的資訊爬蟲一般也是無法抓取。所以,就不要再問我能不能破解別人相簿的這種問題了,空間加了訪問許可權的也無法訪問。程式輸出的日誌中2016-11-19 01:05:33.010000 failure:484237103 (None - http://user.qzone.qq.com/484237103)這種,一般就是無法訪問的QQ。還有,我們是無法檢視一個QQ的所有好友的,所以爬下來的好友資訊也只是部分好友。爬蟲不是黑客,希望理解。

結語:

  • 爬蟲是偏後臺型的任務,以抓取效率為主,並沒有很好的使用者介面,並且需要不斷地維護。所以對於完全沒有程式設計基礎的人來說,可能會遇到各種各樣的問題。此專案最初的目的是為大家提供QQ空間爬蟲的一種架構,並不保證程式一直能跑。只要騰訊伺服器端稍有變動,例如某一個連結變了,可能程式就抓不到資料了,此時程式也要相應地將連結換成新的,如果網頁結構變了,解析規則也要相應地修改。
  • 有同學反映,爬QQ空間的很多都是學生想爬一些資料做統計研究的,本不是計算機專業,爬起來比較困難,希望有現成的資料出售。但是因為工作變動,其實今年3月份 程式開發完後我就沒有跑過了,所以手上也沒有資料。不過接下來我會開一兩臺機器跑這個爬蟲,如果需要資料可以郵件聯絡我([email protected])。
  • 有什麼問題請儘量留言,方便後來遇到同樣問題的同學檢視。

相關推薦

QQ空間爬蟲分享20161118更新

前言: 很抱歉QQSpider這個爬蟲過了這麼久才作更新,同時也很感謝各位同學的肯定和支援! 這次主要替換了程式裡一些不可用的連結,對登入時的驗證碼作了處理,對去重佇列作了優化。並且可以非常簡單地實現爬蟲分散式擴充套件。 使用說明: 啟動前配

pycharm 安裝 註冊碼20181128有用以及建立軟連線與teamviewer的安裝

pycharm 安裝參考https://blog.csdn.net/limingyue0312/article/details/81805826 一般一段時間後可能無效,有就趕快用吧。具體參考 https://blog.csdn.net/u014386899/article/details/

爬取糗事百科文欄位子,20161022可用

簡單的利用bs4提取了一些東西,中途嘗試了網上的多個版本,自己簡單的模仿了一下。 主要提取部分: <a href="/article/117808662" target="_blank" cla

近三十人民幣貸款利息一覽表(貸款基準利率)20151024更新

​金融機構人民幣貸款基準利率  (來源: 中國人民銀行 貨幣政策司)   單位:年利率%   調整時間 六個月以內(含六個月)

Pycharm啟用方法20161114號親測可用

現在網上有很多PyCharm的啟用方法,但是都是一看摸不到頭腦,一時間很難進行啟用,經過網上很多次的尋找,尋找到一種較為穩定且快捷的方法,筆者在win7平臺以及Ubuntu下進行了實驗,發現是很好用的,具體步驟如下:help——Register——如下介面: 安裝到輸

201614手機qq內建瀏覽器在iframe中a標籤的坑

<a href="javascript:location.href='www.baidu.com'" target="_self"></a> 在手機qq的內建瀏覽器中,如果使用

# 程式設計俱樂部每日一練20181130A + B problem 大數加法

程式設計俱樂部每日一練(2018年11月30日)A + B problem 大數加法 Description Calculate A + B. Input Each line will contain two integers A and B. Process to end

# 程式設計俱樂部每日一練20181129取蘋果

程式設計俱樂部每日一練(2018年11月29日)取蘋果 Description 勝鵬dalao有nn個蘋果,編號為1-n1−n。一天,子旭dalao想去勝鵬dalao那吃蘋果,為了難住子旭dalao,勝鵬大佬給子旭dalao出了一道題。 所有蘋果開始時都是未被取出的,子旭dala

# 程式設計俱樂部每日一練20181128毛學姐大戰學渣

程式設計俱樂部每日一練(2018年11月28日)毛學姐大戰學渣 Description 又到了毛學姐屠殺學渣的時候了,學渣根據實力不同從 Lv1 依次向上提升,毛學姐每屠殺一個學渣就會不斷地提升自己的實力,從而挑戰更高等級的學渣,他按照這樣的方式屠殺學渣:1,1,2,1,1,1,3,

# 程式設計俱樂部每日一練20181127我讀書少,你們得幫幫我 加特林大戰殭屍

程式設計俱樂部每日一練(2018年11月27日)我讀書少,你們得幫幫我 加特林大戰殭屍 我讀書少,你們得幫幫我 Description 這是一題簡單的題目,考的只是你的數學而已。我一直都很好奇愚公一家到底有多少人。好吧,毛學姐說你們會幫我的。假設愚公家族 每個人的一生是這樣度過的

軟體設計師考試說明2018111011

1.考試要求: (1)掌握資料表示、算術和邏輯運算; (2)掌握相關的應用數學、離散數學的基礎知識; (3)掌握計算機體系結構以及各主要部件的效能和基本工作原理; (4)掌握作業系統、程式設計語言的基礎知識,瞭解編譯程式的基本知識; (5)熟練掌握常用資料結構

開始正式記錄我的程式設計之路為興趣而生---20181118

簡介&隨想 轉眼機電專業畢業已一年多,從學校到工作一直搞嵌入式,但都是小打小鬧,鑽研不夠深入,沒有真正靜下心來思考技術人該有的樣子和態度。我大多數人都會和我一樣,這裡學一下,那裡搗鼓一下,知其然而不知其所以然。我想這些都是我們的必經之路,畢竟在沒有完全確

面試經歷---S&G20160227上午面試

S&G是一家外企,在廣州琶州那邊,下面附上這家企業的筆試題。2016年2月27日上午筆試題一.      JAVA基礎題1.   什麼是介面?介面就是一些方法特徵的集合,是對物件的抽象。2.   什麼時候使用抽象類來替代介面?存在繼承關係的情況下,可以使用抽象類來替代

高薪誠聘熟悉ABP框架的.NET高階開發工程師2016728重發

招聘單位是ABP架構設計交流群(134710707)群主陽銘所在的公司-上海運圖貿易有限公司 招聘崗位:.NET高階開發工程師工作地點:上海-普陀區 【公司情況】上海運圖貿易有限公司,是由易迅網的創始人卜廣齊投資2500萬美金成立的O2O汽車電商公司,由卜廣齊親自任CEO,是全國最大的自營新車電商,目前已

徹底征服 Spring AOP 之 理論篇 java spring aop 永順 20161113釋出

基本知識其實, 接觸了這麼久的 AOP, 我感覺, AOP 給人難以理解的一個關鍵點是它的概念比較多, 而且坑爹的是, 這些概念經過了中文翻譯後, 變得面目全非, 相同的一個術語, 在不同的翻譯下, 含義總有著各種莫名其妙的差別. 鑑於此, 我在本章的開頭, 著重為為大家介紹一個 Spring AOP 的各項

基於jfinal3.2構建的知識分享網[ 20170827 更新 ]

權限管理 easyui jfinal 知識分享網(51fenxiang.xyz),是基於JFinal3.2+eayui1.5.2等技術構建的一款知識共享服務平臺,該平臺有利於企業和團隊構建碎片化的知識分享平臺,充分利用閑暇時間記憶碎片化的知識,提升企業或團隊整體技能和知識水平。訪問網址: http

20181118 下雨天

range 用法2 test="人生若只如初見" v=range(5)# 代表0到4的數字,用來建立連續數字 for i in v: print ("1.用來建立連續數字:",i) b=range(0,10,2)# 按照步長為2 輸出 0到9的數字 for i in b: print

20181118 at cronb計劃任務及添加刪除任務

技術分享 img 刪除 cron 分享圖片 info ima com at cron 2018年11月18日 at cronb計劃任務及添加刪除任務

20181118訓練總結

這周基本沒看什麼資料。做了幾道題。。。 打了兩場cf的比賽,一場div.2 ,一場div.3 雖說總體來說上了幾十分,但是還是因為讀題的問題掛了終測(兩場都掛了一道) 題目很簡單,但是沒讀對。div.2那場A掛了終測(讀錯題),B不會(質因子分解),說明對分解質因子類的題

Debian進入不了圖形介面的折騰2006918

首先我的作業系統是Debian Linux,我Debian用的是Xfce桌面環境,昨天我用了命令apt-get install gnome,安裝了一堆軟體之後重啟,就進入不了圖形介面了,只能進入字元介面,今天可好折騰了。 上午在網上查資料,可能總結了幾個吧 1、在字元介面輸入