欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 詳解爬取并統(tǒng)計CSDN全站熱榜標題關鍵詞詞頻流程

 更新時間:2021年11月10日 10:32:32   作者:劍客阿良_ALiang  
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python爬取CSDN全站綜合熱榜標題,順便統(tǒng)計關鍵詞詞頻,大家可以在過程中查缺補漏,提升水平

前言

最近在出差,發(fā)現(xiàn)住的賓館居然有小強。所以出差無聊之際,寫了點爬蟲的代碼玩玩,問就是應景。本篇文章主要是爬取CSDN全站綜合熱榜的100個標題,然后分詞提取關鍵詞,統(tǒng)計一下詞頻。

我想了下,對于其他博主還是有用的,可以看看什么標題可以上熱榜,就分享一下吧。順便把我解決各類問題的方法,說一說。

環(huán)境

使用的IDE為:spyder(有看著界面不習慣的,忍一下,不關鍵)

頁面爬取使用chromedriver,至于原因我后面會說。

分詞器:jieba

爬取頁面地址:https://blog.csdn.net/rank/list

爬蟲代碼

這里說一下為什么沒有用requests直接獲取頁面源碼,主要是因為該頁面并不能直接請求出源碼。而是通過頁面滾動到最下方,才可以顯示出全部的100個排名的文章。

所以我的思路是,使用chromedriver,然后執(zhí)行js實現(xiàn)滾動頁面到最下方。

這里需要說明一下chromedriver的下載,需要根據(jù)你google瀏覽器的版本來。我的筆記本事mac,可以點擊左上角的Chrome,再點擊關于Google Chrome看看自己的瀏覽器版本。

分享一下chromedriver的下載地址:google chrome driver下載地址

簡單說明一下driver的原理,就是模擬瀏覽器打開url的操作,就像我們手點一樣,具體原理改天可以再聊聊。

不廢話了,上爬蟲工具代碼

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov  4 17:15:06 2021
@author: huyi
"""
 
from selenium import webdriver
import time
 
# =============================================================================
# 爬取動態(tài)下滑加載網(wǎng)頁
# =============================================================================
def pa(url):
    driver = webdriver.Chrome('/usr/local/bin/chromedriver')
    driver.get(url)
    js = '''
                let height = 0
        let interval = setInterval(() => {
            window.scrollTo({
                top: height,
                behavior: "smooth"
            });
            height += 500
        }, 500);
        setTimeout(() => {
            clearInterval(interval)
        }, 20000);
    '''
    driver.execute_script(js)
    time.sleep(20)
    source = driver.page_source
    driver.close()
    return source

代碼說明

1、代碼主要是一個工具方法,使用diver打開瀏覽器。然后通過js代碼,模擬向下滾動的操作。

2、根據(jù)你的網(wǎng)絡條件,里面的超時時間你可以調整。避免還沒有滾動到最下面就結束了,因為我賓館的網(wǎng)比較卡,所以設置的比較大。

3、返回頁面源碼,為了后面的xpath解析。

驗證一下

OK,已經(jīng)拿到了頁面源碼了。

關鍵詞提取代碼

我們把關鍵詞提取的方法也準備一下。不廢話,上代碼。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov  4 21:53:22 2021
@author: huyi
"""
 
 
import jieba.analyse
 
 
def get_key_word(sentence):
    result_dic = {}
    words_lis = jieba.analyse.extract_tags(
        sentence, topK=3, withWeight=True, allowPOS=())
    for word, flag in words_lis:
        if word in result_dic:
            result_dic[word] += 1
        else:
            result_dic[word] = 1
    return result_dic

代碼說明

1、簡單說明一下,方法取的是權重最高的3個詞,可以按照你的喜歡調整。

2、把相同的詞做一個計數(shù),方便把100的標題關鍵詞詞頻統(tǒng)計用。

主程序代碼

主程序主要是將源碼中的標題,使用lxml進行元素提取,獲取標題。然后詞頻統(tǒng)計后輸出結果文本。

不廢話,上代碼。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov  4 14:01:38 2021
@author: huyi
"""
from lxml import etree
from tools.dynamic_page import pa
from tools.analyse_word import get_key_word
 
 
csdn_url = 'https://blog.csdn.net/rank/list'
source = etree.HTML(pa(csdn_url))
 
titles = source.xpath("http://div[@class='hosetitem-title']/a/text()")
key_word_dic = {}
for x in titles:
    if x:
        for k, v in get_key_word(x).items():
            if k.lower() in key_word_dic:
                key_word_dic[k.lower()] += v
            else:
                key_word_dic[k.lower()] = v
 
word_count_sort = sorted(key_word_dic.items(),
                         key=lambda x: x[1], reverse=True)
 
with open('result.txt', mode='w', encoding='utf-8') as f:
    for y in word_count_sort:
        f.write('{},{}\n'.format(y[0], y[1]))

代碼說明

1、xpath怎么?。縢oogle瀏覽器支持右鍵直接copy,但是還是建議了解一下xpath相關語法。

2、把英文單詞統(tǒng)一小寫,避免重復。

3、按照詞頻倒序排列輸出的,最多次數(shù)的在前面。

驗證結果

OK,不出意外,java是yyds。

總結

可以看到最后的統(tǒng)計里面有一些符號,怎么說?可以通過jieba停用詞去掉,看你怎么篩選了。

申明一下,本文案例僅研究探索使用,不是為了惡意攻擊。

如果本文對你有作用的話,請不要吝嗇你的贊,謝謝。

以上就是Python 詳解爬取并統(tǒng)計CSDN全站熱榜標題關鍵詞詞頻流程的詳細內容,更多關于Python 爬取CSDN的資料請關注腳本之家其它相關文章!

相關文章

  • Django框架中間件定義與使用方法案例分析

    Django框架中間件定義與使用方法案例分析

    這篇文章主要介紹了Django框架中間件定義與使用方法,結合具體案例形式分析了Django框架中間件相關定義、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • 如何建立一個超圖詳解

    如何建立一個超圖詳解

    這篇文章主要介紹了如何建立一個超圖,如果你想學習圖像處理,這盤文章可能對你有一點幫助,需要的朋友可以參考下
    2021-04-04
  • Python關鍵字之global與nonlocal

    Python關鍵字之global與nonlocal

    這篇文章主要為大家詳細介紹了Python關鍵字之global與nonlocal,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • matplotlib legend()里字體如何修改

    matplotlib legend()里字體如何修改

    這篇文章主要介紹了matplotlib legend()里字體如何修改問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 基于python繪制科赫雪花

    基于python繪制科赫雪花

    這篇文章主要為大家詳細介紹了基于python繪制科赫雪花,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python import與from import使用和區(qū)別解讀

    Python import與from import使用和區(qū)別解讀

    Python程序可以調用一組基本的函數(shù)(即內建函數(shù)),比如print()、input()和len()等函數(shù)。接下來通過本文給大家介紹Python import與from import使用及區(qū)別介紹,感興趣的朋友一起看看吧
    2021-09-09
  • Python 如何展開嵌套的序列

    Python 如何展開嵌套的序列

    這篇文章主要介紹了Python 如何展開嵌套的序列,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • python中28種極坐標繪圖函數(shù)總結

    python中28種極坐標繪圖函數(shù)總結

    這篇文章主要為大家詳細介紹了python中28種極坐標繪圖函數(shù)的用法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • Django 中自定義 Admin 樣式與功能的實現(xiàn)方法

    Django 中自定義 Admin 樣式與功能的實現(xiàn)方法

    這篇文章主要介紹了Django 中自定義 Admin 樣式與功能的實現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • python+opencv實現(xiàn)論文插圖局部放大并拼接效果

    python+opencv實現(xiàn)論文插圖局部放大并拼接效果

    在做圖像數(shù)據(jù)標注時,很難一次就做到精準標注,如果目標比較小,即使微調也難以做到精準,所以就需要另外一個窗口對標注區(qū)域進行局部放大以方便微調,這篇文章主要給大家介紹了關于python+opencv實現(xiàn)論文插圖局部放大并拼接效果的相關資料,需要的朋友可以參考下
    2021-10-10

最新評論