爬虫实战-python爬取QQ群好友信息
自從開始學習爬蟲后,總是無法控制那一顆躁動的心。每天總是想要爬點什么,爬過電影、爬過電影影評、爬過圖片(美女圖)、爬過視頻鏈接,從最初的簡單解析網頁到模擬登陸再到異步加載,現在看到一個網頁最先想的就是要不要爬一下。話不多說,來我們今天的項目,通過模擬登陸和異步加載爬一下QQ群成員的信息。
大概思路
我們通過網頁版QQ群管理去獲取相應的群信息,通過點擊QQ群首頁上的“群管理”進入到QQ群頁面,分析鏈接我們發現每一個QQ群的鏈接形式都是“https://qun.qq.com/member.html#gid=”加上群號碼,這樣就為我們爬蟲減少了一定的工作量。在爬騰訊的網站最大的問題就是登錄,我們不能像入門時的簡單的發出登錄請求包,獲取cookies后再用cookies來訪問,騰訊的網站是異步加載的,這有的去分析監聽network和js請求來找到想要的加載,十分麻煩。所以我們采用selenuim,不需要去找請求,直接模擬登錄就可以了,登陸后直接獲取到網頁的源碼,然后像簡單的爬蟲一樣去解析源碼獲取我們想要的內容。
一、模擬登陸
首先通過selenuim定義一個driver對象,這里我使用的是火狐瀏覽器,直接通過下面的命令即可調用
driver?=?webdriver.Firefox()定義好了以后,我們通過下面的函數瀏覽器打開我們的想要爬取QQ群的鏈接,QQ群的鏈接形式是“https://qun.qq.com/member.html#gid=”+群號碼
driver.get(url)打開以后網頁會自動為我們彈出二維碼,這就不用我們去模擬點擊了,直接用手機qq掃描二維碼即可登錄,然后就可以看到我們想要爬取QQ群的群成員信息。有成員網名、群名片、QQ號、性別、Q齡、入群時間以及最后發言時間等信息。
二、下拉加載頁面
登錄到QQ群成員界面后,網頁上顯示的只有20個左右的人數,當網頁下拉時,每次更新會加載20個成員的信息,我們爬取需要所有人的信息就需要模擬下拉界面,這時候selenuim另一個功能出現模擬下拉加載頁面
def?scroll_foot(driver):js="var?q=document.documentElement.scrollTop=100000"return?driver.execute_script(js)三、保存網頁源碼
通過selenuim里的driver.page_source來獲取網頁源碼,我們可以將源碼保存到本地txt文件中,這樣可以方便對源碼解析,避免每次登陸的麻煩。
#獲取源碼 res?=?driver.page_source #關閉瀏覽器 driver.quit() #保存源碼 with?open('html.txt',?'w',?encoding='utf-8')?as?f:f.write(res) f.close()四、提取信息
相信到了這一步很多小伙伴都十分熟悉了,這一步就是我們剛接觸爬蟲時分析網頁一樣。這里我們使用BeautifulSoup來解析源碼。依次獲取群成員的信息。
from?bs4?import?BeautifulSoupwith?open('html.txt',?'r',?encoding='utf-8')?as?f:res?=?f.read() soup?=?BeautifulSoup(res,"lxml") html?=?soup.select("td") #number為群成員數 for?i?in?range(number):print("群成員:",html[i*10+2].text.replace("\t",?"").replace("\n",?""))print("群名片:",html[i*10+3].text.replace("\t",?"").replace("\n",?""))print("QQ號:",html[i*10+4].text.replace("\t",?"").replace("\n",?""))print("性別:",html[i*10+5].text.replace("\t",?"").replace("\n",?""))print("Q齡:",html[i*10+6].text.replace("\t",?"").replace("\n",?""))print("入群時間:",html[i*10+7].text.replace("\t",?"").replace("\n",?""))print("最后發言:",html[i*10+8].text.replace("\t",?"").replace("\n",?""))至此,爬蟲就結束了。由于涉及群成員信息,就不展示爬蟲結果,想試試的伙伴可以根據上面的步驟爬一下自己的QQ群好友信息。更多機器學習算法的學習歡迎關注我們。對機器學習感興趣的同學歡迎大家轉發&轉載本公眾號文章,讓更多學習機器學習的伙伴加入公眾號《python練手項目實戰》,在實戰中成長。
?
?
總結
以上是生活随笔為你收集整理的爬虫实战-python爬取QQ群好友信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果打字怎么换行_iPhone实用小技巧
- 下一篇: Python练习题答案: CIS 122