Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】
Java版 QQ空間自動(dòng)登錄無(wú)需拷貝cookie一天抓取30WQQ說(shuō)說(shuō)數(shù)據(jù)&流程分析
QQ空間說(shuō)說(shuō)抓取難度比較大,花了一個(gè)星期才研究清楚!
?代碼請(qǐng)移步到GitHub GitHub地址:https://github.com/20100507/Qzone?【沒(méi)有加入多線程,希望你可以參與進(jìn)來(lái)加入多線程不過(guò) 單個(gè)QQ請(qǐng)求頻率不可以太高 ?過(guò)多的線程就需要 更多的QQ小號(hào)輪流登錄】 不要忘了點(diǎn)一個(gè)贊 哈哈哈~~? ? ? ?
1.?截圖看一看效果:
? ? ? 1.1抓取執(zhí)行過(guò)程:? ? ? ? ?
? ? ?1.2 部分?jǐn)?shù)據(jù)截圖:
?
1.3 每一個(gè)說(shuō)說(shuō)的具體內(nèi)容
?1.4 70W說(shuō)說(shuō)數(shù)據(jù)文件大小:
? ? ? ??
?
2.接下來(lái)分析整個(gè)執(zhí)行的流程
? 2.1代碼結(jié)構(gòu)圖【項(xiàng)目是采用Maven構(gòu)建】:
? ? ? ?
? ?簡(jiǎn)單的說(shuō)一下整個(gè)代碼的結(jié)構(gòu):
? ?2.2Visio分析流程
? ? ??
?
? ? 上面的Vsio的圖,和代碼中基本上都對(duì)應(yīng)了,對(duì)于保存留言也很簡(jiǎn)單,換一個(gè)路徑就好,所有的必要參數(shù)和cookie都已經(jīng)拿到。如果想要保存一個(gè)人所有的QQ說(shuō)說(shuō)數(shù)據(jù),切換分頁(yè)的參數(shù)即可,but,我的代碼中沒(méi)有加入分頁(yè),僅僅保存每個(gè)QQ用戶的首頁(yè)的說(shuō)說(shuō)數(shù)據(jù),懶得弄了,就是那么回事,就是在研究參數(shù)和cookie真的很費(fèi)勁!!!!
?2.3 測(cè)試代碼中 請(qǐng)注意:
? ? 1. 注意我寫的 try-catch,之前程序沒(méi)有使用try-catch,程序在執(zhí)行中 ,會(huì)由于網(wǎng)絡(luò)原因拋出異常 ,如果拋給了虛擬機(jī) ,JVM就停止,程序就掛了,干脆我就catch異常,如果catch到異常,我就在遞歸再次調(diào)用你,防止網(wǎng)絡(luò)原因,導(dǎo)致程序極容易停止。
? ? 2.注意一點(diǎn),我的在 ?%25 ,也就是輪詢QQ號(hào)登陸,每個(gè)QQ號(hào)采集25個(gè)用戶我就重新?lián)Q其他的QQ用戶登錄,num.properties中的QQ數(shù)量越多越好【封號(hào)率越低】,%多少看自己的喜好!
? ??
1 package qzone_enter;2 3 import java.io.IOException;4 import java.util.List;5 6 import org.bianqi.enter.bean.QQBean;7 import org.bianqi.enter.key.GetQQByProperties;8 import org.bianqi.enter.key.KeyWord;9 import org.bianqi.enter.login.InputNameAndPwd; 10 import org.bianqi.getdata.GetShuoShuoData; 11 12 public class GetMyShuoShuo { 13 14 public static List<QQBean> listQQ = null; 15 public static int k = 0; 16 17 static { 18 try { 19 listQQ = GetQQByProperties.getQQNumAndPwd(); 20 KeyWord.uin = listQQ.get(k).getNum(); 21 KeyWord.password = listQQ.get(k).getPwd(); 22 System.out.println("初始化"+KeyWord.uin+"登錄~~~~~~~~~~~~~"); 23 InputNameAndPwd.login(); 24 } catch (IOException e) { 25 e.printStackTrace(); 26 } 27 } 28 29 public static void getShuoshuoDemo(long i, long j) throws Exception { 30 try { 31 for (; i <= j; i++) { 32 if (i % 25 == 0) { 33 if (k == listQQ.size()) { 34 k = 0; 35 } 36 KeyWord.uin = listQQ.get(k).getNum(); 37 KeyWord.password = listQQ.get(k).getPwd(); 38 System.out.println("切換到"+KeyWord.uin+"登錄"); 39 InputNameAndPwd.login(); 40 k++; 41 } 42 GetShuoShuoData.getShuoData(Long.toString(i)); 43 System.out.println(KeyWord.uin+"正在采集==============QQ用戶" + i + "數(shù)據(jù)======================="); 44 } 45 } catch (Exception e) { 46 e.printStackTrace(); 47 GetMyShuoShuo.getShuoshuo(i, j); 48 } 49 } 50 51 public static void getShuoshuo(long i, long j) throws Exception { 52 try { 53 for (; i <= j; i++) { 54 if (i % 25 == 0) { 55 if (k == listQQ.size()) { 56 k = 0; 57 } 58 KeyWord.uin = listQQ.get(k).getNum(); 59 KeyWord.password = listQQ.get(k).getPwd(); 60 System.out.println("切換到"+KeyWord.uin+"登錄"); 61 InputNameAndPwd.login(); 62 k++; 63 } 64 GetShuoShuoData.getShuoData(Long.toString(i)); 65 System.out.println(KeyWord.uin+"正在采集==============QQ用戶" + i + "數(shù)據(jù)======================="); 66 } 67 } catch (Exception e) { 68 e.printStackTrace(); 69 GetMyShuoShuo.getShuoshuoDemo(i, j); 70 } 71 } 72 73 public static void main(String[] args) throws Exception { 74 // 開始QQ號(hào) 結(jié)束QQ號(hào) 75 long i = 669424; 76 long j = 2000000000; 77 getShuoshuo(i, j); 78 } 79 }?
?3.1總結(jié)
? ? ? ? ? ? ? ? ? ?就目前來(lái)看,我的網(wǎng)速可能不是很好,但是一天依然可以保存30W說(shuō)說(shuō)數(shù)據(jù),但是有時(shí)候程序也會(huì)假死,也許是網(wǎng)絡(luò)不好。
? ? ? ? ? ? ? ? ? ?還有,有時(shí)候 莫名的需要你輸入驗(yàn)證碼,沒(méi)有辦法你就在瀏覽器輸入這個(gè)QQ賬號(hào)密碼,手動(dòng)多輸入幾次驗(yàn)證碼,他就一般不會(huì)檢測(cè)了。不在需要驗(yàn)證碼
? ? ? ? ? ? ? ? ? PS【驗(yàn)證碼需要打碼平臺(tái) 但是我沒(méi)有整,but 需要money哦~還有 , 驗(yàn)證碼圖片會(huì)自動(dòng)保存到項(xiàng)目路徑下但是,手動(dòng)輸入驗(yàn)證碼目前程序也不通過(guò),可以修復(fù)的幫我修 ? ? ? ? ? ? ? ? ? ? 復(fù)一下 謝謝~~~】
? ? ? ? ? ? ? ? ?num.properties中 QQ號(hào)碼低于12個(gè)也有可能封號(hào),再次強(qiáng)調(diào)QQ小號(hào)一定要多,讓他檢測(cè)不出你是爬蟲。如果你就一個(gè)QQ號(hào)就不要嘗試玩 ,封號(hào)不要怪我!
? ? ? ? ? ? ? ? ? 沒(méi)有采用多線程技術(shù),一個(gè)原因我也沒(méi)有那么多的QQ小號(hào)。如果每一個(gè)QQ訪問(wèn)頻率太高就會(huì)封號(hào)!!
? ? ? ? ? ? ? ? ? 記得在GitHub點(diǎn)一個(gè)贊!哈哈哈
?
轉(zhuǎn)自:http://www.cnblogs.com/bianqi/p/7206885.html
轉(zhuǎn)載于:https://www.cnblogs.com/abcd19880817/p/7211247.html
總結(jié)
以上是生活随笔為你收集整理的Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 红顶商人 —— 胡雪岩
- 下一篇: Java实现链表结构的具体代码