Python3爬取QQ空間信息(上)

2018-09-14 15:31 更新

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專(zhuān)欄

下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解

導(dǎo)語(yǔ)

翻了翻之前關(guān)于爬蟲(chóng)的文章。。。

似乎一直在欺負(fù)小網(wǎng)站,沒(méi)什么挑戰(zhàn)性。。。

那么,就來(lái)“試水”一波TX吧~~~

本著細(xì)水長(zhǎng)流(偷懶)的原則T_T,這期文章我決定拆成兩篇寫(xiě)。第一篇主要解決QQ空間的登錄問(wèn)題并嘗試抓取一些信息,第二篇致力于抓取QQ空間的好友信息并做可視化分析。

讓我們愉快地開(kāi)始吧~~~

相關(guān)文件

百度網(wǎng)盤(pán)下載鏈接: https://pan.baidu.com/s/1D3C5cSp7YhuTooPJa7znjw 

密碼: yccp

開(kāi)發(fā)工具

Python版本:3.6.4

相關(guān)模塊:

requests模塊;

selenium模塊;

lxml模塊;

以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊,并前往:

http://npm.taobao.org/mirrors/chromedriver/

下載與自己使用的Chrome瀏覽器版本對(duì)應(yīng)的驅(qū)動(dòng)文件,下載完畢后將chromedriver.exe所在文件夾添加到環(huán)境變量中即可。

原理簡(jiǎn)介

本文主要解決QQ空間的登錄問(wèn)題。

其主要思路為:

利用selenium模擬登錄QQ空間從而獲取登錄QQ空間所需的cookie值,這樣就可以利用requests模塊來(lái)抓取QQ空間的數(shù)據(jù)了。

為什么這么繞?

selenium好久不用,寫(xiě)起來(lái)太慢了。而且它本身速度和資源占用等問(wèn)題一直為大家所詬病。

And 省略無(wú)數(shù)條理由。

一些細(xì)節(jié):

(1)第一次獲取cookie之后將其保存下來(lái),下次再登錄之前先試試保存的cookie有沒(méi)有用,有用直接使用就可以了,這樣可以進(jìn)一步節(jié)省時(shí)間。

(2)抓包分析過(guò)程中,可以發(fā)現(xiàn)抓取QQ空間數(shù)據(jù)所需請(qǐng)求的鏈接都包含g_tk這個(gè)參數(shù),這個(gè)參數(shù)實(shí)際上是使用cookie中的skey參數(shù)計(jì)算獲得的,懶得打公式了,直接貼一小段代碼吧:

最后:

不抓點(diǎn)數(shù)據(jù)好像不能證明這篇文章真的有用?

好吧,那就把:

扒下來(lái)吧~~~

具體實(shí)現(xiàn)過(guò)程詳見(jiàn)相關(guān)文件中的源代碼。

使用演示

QQ號(hào)(username)和密碼(password):

在QQ_Spider.py文件中填寫(xiě),位置如下圖所示:

運(yùn)行:

在cmd窗口運(yùn)行QQ_Spider.py文件即可。

結(jié)果:

That's All.

下期預(yù)告

在本期基礎(chǔ)上抓取好友的個(gè)人信息,并可視化分析抓取的結(jié)果。有興趣的小伙伴可以提前試試~~~

事實(shí)上,微調(diào)本文所提供的代碼,理論上是可以抓取QQ所有用戶(hù)的信息的。當(dāng)然,只是理論上,以及干很多有趣的事情。

T_T作為一個(gè)不搞事且不愛(ài)喝茶的boy,上述的理論我就不負(fù)責(zé)實(shí)現(xiàn)了。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)