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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫QQ说说并分析朋友状况

發布時間:2025/5/22 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫QQ说说并分析朋友状况 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

今天我們要做的事情是使用動態爬蟲來爬取QQ空間的說說,并把這些內容存在txt中,然后讀取出來生成云圖,這樣可以清晰的看出朋友的狀況。

?

這是好友的QQ空間10年說說內容,基本有一個大致的印象了。

?

?

?

爬取動態內容

?

  • 因為動態頁面的內容是動態加載出來的,所以我們需要不斷下滑,加載頁面

  • 切換到當前內容的frame中,也有可能不是frame,這里需要查看具體情況

  • 獲取頁面源數據,然后放入xpath中,然后讀取

  • ?# 下拉滾動條,使瀏覽器加載出動態加載的內容,# 我這里是從1開始到6結束 分5 次加載完每頁數據for i in range(1,6):height = 20000*i#每次滑動20000像素strWord = "window.scrollBy(0,"+str(height)+")"driver.execute_script(strWord)time.sleep(4)# 很多時候網頁由多個<frame>或<iframe>組成,webdriver默認定位的是最外層的frame,# 所以這里需要選中一下說說所在的frame,否則找不到下面需要的網頁元素driver.switch_to.frame("app_canvas_frame")selector = etree.HTML(driver.page_source)divs = selector.xpath('//*[@id="msgList"]/li/div[3]')

    所有的注釋都在代碼中,所以也就不作詳情說明,

    ?

    爬取說說的完整代碼

    ?

    #coding:utf-8import time from selenium import webdriver from lxml import etree#這里一定要設置編碼格式,防止后面寫入文件時報錯 import sys reload(sys) sys.setdefaultencoding( "utf-8" )friend = 'XXX' # 朋友的QQ號,朋友的空間要求允許你能訪問 user = 'XXX' ?# 你的QQ號 pw = 'XXXX' ?# 你的QQ密碼#獲取瀏覽器驅動 driver = webdriver.Firefox()# 瀏覽器窗口最大化 driver.maximize_window()# 瀏覽器地址定向為qq登陸頁面 driver.get("http://i.qq.com")# 所以這里需要選中一下frame,否則找不到下面需要的網頁元素 driver.switch_to.frame("login_frame")# 自動點擊賬號登陸方式 driver.find_element_by_id("switcher_plogin").click()# 賬號輸入框輸入已知qq賬號 driver.find_element_by_id("u").send_keys(user)# 密碼框輸入已知密碼 driver.find_element_by_id("p").send_keys(pw)# 自動點擊登陸按鈕 driver.find_element_by_id("login_button").click()# 讓webdriver操縱當前頁 driver.switch_to.default_content()# 跳到說說的url, friend你可以任意改成你想訪問的空間 driver.get("http://user.qzone.qq.com/" + friend + "/311")next_num = 0 ?# 初始“下一頁”的id while True:# 下拉滾動條,使瀏覽器加載出動態加載的內容,# 我這里是從1開始到6結束 分5 次加載完每頁數據for i in range(1,6):height = 20000*i#每次滑動20000像素strWord = "window.scrollBy(0,"+str(height)+")"driver.execute_script(strWord)time.sleep(4)# 很多時候網頁由多個<frame>或<iframe>組成,webdriver默認定位的是最外層的frame,# 所以這里需要選中一下說說所在的frame,否則找不到下面需要的網頁元素driver.switch_to.frame("app_canvas_frame")selector = etree.HTML(driver.page_source)divs = selector.xpath('//*[@id="msgList"]/li/div[3]')#這里使用 a 表示內容可以連續不清空寫入with open('qq_word.txt','a') as f:for div in divs:qq_name = div.xpath('./div[2]/a/text()')qq_content = div.xpath('./div[2]/pre/text()')qq_time = div.xpath('./div[4]/div[1]/span/a/text()')qq_name = qq_name[0] if len(qq_name)>0 else ''qq_content = qq_content[0] if len(qq_content)>0 else ''qq_time = qq_time[0] if len(qq_time)>0 else ''print qq_name,qq_time,qq_contentf.write(qq_content+"\n")# 當已經到了尾頁,“下一頁”這個按鈕就沒有id了,可以結束了if driver.page_source.find('pager_next_' + str(next_num)) == -1:break# 找到“下一頁”的按鈕,因為下一頁的按鈕是動態變化的,這里需要動態記錄一下driver.find_element_by_id('pager_next_' + str(next_num)).click()# “下一頁”的idnext_num += 1# 因為在下一個循環里首先還要把頁面下拉,所以要跳到外層的frame上driver.switch_to.parent_frame()

    這樣所有的說說內容就可以爬取到了。并且存到了同級目錄中

    ?

    生成詞云

    ?

    生成詞云需要用到的庫:

    wordcloud, 生成詞云
    matplotlib, 生成詞云圖片
    jieba ,這個庫可用可不用,但我因為中文一直顯示不出來,后來加上了這個庫,就能顯示中文了。

    #coding:utf-8""" 使用結巴分詞生成云圖說明這里1.生成詞云一定要設置字體樣式,否則漢字出現亂碼或者不顯示2.我不知道為什么本機一直顯示不了中文,后面我加了jieba分詞詞庫就可以顯示中文了"""from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba#生成詞云 def create_word_cloud(filename):text= open("{}.txt".format(filename)).read()# 結巴分詞wordlist = jieba.cut(text, cut_all=True)wl = " ".join(wordlist)# 設置詞云wc = WordCloud(# 設置背景顏色background_color="white",# 設置最大顯示的詞云數max_words=2000,# 這種字體都在電腦字體中,一般路徑font_path='C:\Windows\Fonts\simfang.ttf',height= 1200,width= 1600,# 設置字體最大值max_font_size=100,# 設置有多少種隨機生成狀態,即有多少種配色方案random_state=30,)myword = wc.generate(wl) ?# 生成詞云# 展示詞云圖plt.imshow(myword)plt.axis("off")plt.show()wc.to_file('py_book.png') ?# 把詞云保存下if __name__ == '__main__':create_word_cloud('word_py')

    轉載于:https://www.cnblogs.com/paisenpython/p/10272002.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Python爬虫QQ说说并分析朋友状况的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。