Python爬取QQ空間好友說說並產生詞雲(超詳細)

來源:互聯網
上載者:User

標籤:google   cimage   content   with   hit   nis   模式   交流   ack   

   前言

先看: 

思路

1.確認訪問的URL 
2.類比登入你的QQ號 
3.判斷好友空間是否加了許可權,切換到說說的frame,爬取當前頁面資料,下拉捲軸,翻頁繼續擷取 爬取的內容寫入本地TXT檔案中 
4.爬取到最後一頁,讀取TXT檔案從而產生詞雲

具體分析

1.確認訪問的URL 
這就很簡單了,我們通過觀察發現,QQ空間好友的URL: 
https://user.qzone.qq.com/{好友QQ號}/311

2.我們在請求的時候會遇到類比登入,也就是要通過Selenium+瀏覽器登入你的QQ號後才能訪問你好友的QQ空間 
下面是類比登入的代碼:

 1 file = ‘C:/Users/Administrator/Desktop/{}.txt‘.format(qq) 2     driver = webdriver.Firefox() 3     driver.maximize_window() #視窗最大化 4  5     driver.get(‘https://user.qzone.qq.com/{}/311‘.format(qq))  #URL 6     driver.implicitly_wait(10)  # 隱示等待,為了等待充分載入好網址 7     driver.find_element_by_id(‘login_div‘) 8     driver.switch_to_frame(‘login_frame‘) #切到輸入帳號密碼的frame 9     driver.find_element_by_id(‘switcher_plogin‘).click()##點擊‘帳號密碼登入’10     driver.find_element_by_id(‘u‘).clear() ##清空帳號欄11     driver.find_element_by_id(‘u‘).send_keys(‘你的QQ帳號‘)#輸入帳號12     driver.find_element_by_id(‘p‘).clear()#清空密碼欄13     driver.find_element_by_id(‘p‘).send_keys(‘你的QQ密碼‘)#輸入密碼14     driver.find_element_by_id(‘login_button‘).click()#點擊‘登入’15     driver.switch_to_default_content()   #跳出當前的frame,這步很關鍵,不寫會報錯的,因為你登入後還要切刀另一個frame

需要強調是 driver.switch_to_default_content() ,表示跳出當前的frame,這步很關鍵,因為你登入後還要切刀另一個frame。不寫的話會出現下面的錯誤: 

3.第三部分我分幾個點來說: 
(1).判斷空間是否加了許可權

1     try:2         driver.find_element_by_id(‘QM_OwnerInfo_Icon‘)#判斷是否QQ空間加了許可權3         b = True4     except:5         b = False

(2)切換到說說的frame,這個大家都會找吧 

(3)下拉捲軸 
下拉捲軸是為了點擊‘下一頁’,下拉到可見視圖。下拉捲軸要注意一點: 
一定要對應它的frame,不要在爬取說說的frame下拉。

1 #分4此下拉,確保能下拉到底部2    for j in range(1, 5):3                     driver.execute_script("window.scrollBy(0,5000)")4                     time.sleep(2)

(4)爬取說說資料,這就簡單了吧?我用的xpath擷取的說說的title,感興趣的朋友可以把時間等資料一起擷取

1                 selector = etree.HTML(driver.page_source)2                 title = selector.xpath(‘//li/div/div/pre/text()‘)

(5).翻頁 
直接點擊‘下一頁’即可。

1 driver.find_element_by_link_text(u‘下一頁‘).click()

(6).txt資料寫入,不用多說,爬取到title了直接寫入

1                 for i in title:2                     if not os.path.exists(file):3                         print(‘建立TXT成功‘)4 5                     with open(file, ‘a+‘) as f:6                         f.write(i + ‘\n\n‘)7                         f.close()

4.產生詞雲,這隻是普通的模式,想具體瞭解可以看我以前文章或者Google

 1 def get_wordcloud(file): 2  3  4     f = open(file, ‘r‘, encoding=‘gbk‘).read() 5  6     # 結巴分詞,產生字串,wordcloud無法直接產生正確的中文詞雲 7     cut_text = " ".join(jieba.cut(f)) 8  9     wordcloud = WordCloud(10         # 設定字型,不然會出現口字亂碼,文字的路徑是電腦的字型一般路徑,可以換成別的11         font_path="C:/Windows/Fonts/simfang.ttf",12         # 設定了背景,寬高13         background_color="white", width=2000, height=1380).generate(cut_text)14 15     plt.imshow(wordcloud, interpolation="bilinear")16     plt.axis("off")17     plt.show()18#Python學習交流群:548377875

 

由於時間問題,此篇文章只支援輸入一個好友的QQ號,你要是想爬取你的所有的QQ好友的說說,可以現在QQ郵箱擷取你所有好友的QQ號,然後產生一個數組,依次擷取就可以了。

Python爬取QQ空間好友說說並產生詞雲(超詳細)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.