一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python 詳解爬取并統計CSDN全站熱榜標題關鍵詞詞頻流程

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

2022-02-27 11:45劍客阿良_ALiang Python

讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰中才能獲得能力的提升,本篇文章手把手帶你用Python爬取CSDN全站綜合熱榜標題,順便統計關鍵詞詞頻,大家可以在過程中查缺補漏,提升水平

前言

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

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

環境

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

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

分詞器:jieba

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

 

爬蟲代碼

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

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

所以我的思路是,使用chromedriver,然后執行js實現滾動頁面到最下方。

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

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

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

分享一下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

# =============================================================================
# 爬取動態下滑加載網頁
# =============================================================================
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、根據你的網絡條件,里面的超時時間你可以調整。避免還沒有滾動到最下面就結束了,因為我賓館的網比較卡,所以設置的比較大。

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

驗證一下

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

OK,已經拿到了頁面源碼了。

 

關鍵詞提取代碼

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

#!/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、把相同的詞做一個計數,方便把100的標題關鍵詞詞頻統計用。

 

主程序代碼

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

不廢話,上代碼。

#!/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("//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怎么???google瀏覽器支持右鍵直接copy,但是還是建議了解一下xpath相關語法。

2、把英文單詞統一小寫,避免重復。

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

驗證結果

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

OK,不出意外,java是yyds。

 

總結

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

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

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

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

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

原文鏈接:https://huyi-aliang.blog.csdn.net/article/details/121154001

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 超级碰在线视频 | 欧美一区高清 | 丁香六月色 | 四虎影视紧急入口地址大全 | 2022最新国产在线不卡a | 好大用力深一点视频 | 美女被吸乳老师羞羞漫画 | 国产精品天天在线 | porno movie hd高清| 日本一区二区三区久久 | 欧美在线高清 | 亚洲国产综合精品 | 91免费永久国产在线观看 | 国产精品成人 | 美女黄金大片视频免费看 | 99热精品69堂国产 | 四虎免费永久观看 | 范冰冰性xxxxhd | 金牛网155755水心论坛黄大父母 | 欧美穿高跟鞋做爰 | re99热 | 精品久久免费视频 | 调教女警花穿环上班 | 波多野结衣小说 | 91视频www | 天天做天天爱天天一爽一毛片 | 高清日韩在线 | 果冻传媒九一制片厂网站 | 999国产精品亚洲77777 | 天天躁夜夜躁很很躁 | 乳色吐息讲的是什么 | 欧美理论片手机在线观看片免费 | 免费全看男女拍拍拍的视频 | 精品日韩欧美一区二区三区在线播放 | 娇小老少配xxxxx性视频 | 韩国久播影院理论片不卡影院 | ccc在线在线36 | 从后面撕开老师的丝袜动态图 | 扒开大腿狠狠挺进视频 | 国产亚洲自愉自愉 | 亚洲AV无码国产精品午夜久久 |