国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Python - Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

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

讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python爬取CSDN全站綜合熱榜標(biāo)題,順便統(tǒng)計(jì)關(guān)鍵詞詞頻,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平

前言

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

我想了下,對(duì)于其他博主還是有用的,可以看看什么標(biāo)題可以上熱榜,就分享一下吧。順便把我解決各類問(wèn)題的方法,說(shuō)一說(shuō)。

環(huán)境

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

頁(yè)面爬取使用chromedriver,至于原因我后面會(huì)說(shuō)。

分詞器:jieba

爬取頁(yè)面地址:https://blog.csdn.net/rank/list

 

爬蟲代碼

這里說(shuō)一下為什么沒(méi)有用requests直接獲取頁(yè)面源碼,主要是因?yàn)樵擁?yè)面并不能直接請(qǐng)求出源碼。而是通過(guò)頁(yè)面滾動(dòng)到最下方,才可以顯示出全部的100個(gè)排名的文章。

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

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

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

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

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

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

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

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov  4 17:15:06 2021
@author: huyi
"""

from selenium import webdriver
import time

# =============================================================================
# 爬取動(dòng)態(tài)下滑加載網(wǎng)頁(yè)
# =============================================================================
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

代碼說(shuō)明

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

2、根據(jù)你的網(wǎng)絡(luò)條件,里面的超時(shí)時(shí)間你可以調(diào)整。避免還沒(méi)有滾動(dòng)到最下面就結(jié)束了,因?yàn)槲屹e館的網(wǎng)比較卡,所以設(shè)置的比較大。

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

驗(yàn)證一下

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

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

 

關(guān)鍵詞提取代碼

我們把關(guān)鍵詞提取的方法也準(zhǔn)備一下。不廢話,上代碼。

#!/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

代碼說(shuō)明

1、簡(jiǎn)單說(shuō)明一下,方法取的是權(quán)重最高的3個(gè)詞,可以按照你的喜歡調(diào)整。

2、把相同的詞做一個(gè)計(jì)數(shù),方便把100的標(biāo)題關(guān)鍵詞詞頻統(tǒng)計(jì)用。

 

主程序代碼

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

不廢話,上代碼。

#!/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]))

代碼說(shuō)明

1、xpath怎么取?google瀏覽器支持右鍵直接copy,但是還是建議了解一下xpath相關(guān)語(yǔ)法。

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

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

驗(yàn)證結(jié)果

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

OK,不出意外,java是yyds。

 

總結(jié)

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

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

如果本文對(duì)你有作用的話,請(qǐng)不要吝嗇你的贊,謝謝。

Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程

以上就是Python 詳解爬取并統(tǒng)計(jì)CSDN全站熱榜標(biāo)題關(guān)鍵詞詞頻流程的詳細(xì)內(nèi)容,更多關(guān)于Python 爬取CSDN的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩在线综合 | 新91在线| 国产精品久久久久久久久久久天堂 | 午夜影院免费看 | 国精品一区 | 久日av | 国产欧美高清在线观看 | 亚洲精品影院在线 | 国产色区 | 国产日韩精品在线观看 | 中文字幕av一区二区 | 国产精品二区一区二区aⅴ污介绍 | 国产精品毛片一区二区三区 | h视频免费看 | 亚洲男人天堂2023 | 在线观看三区 | 欧美精品在线视频 | 欧美日韩成人 | 欧美大片免费影院在线观看 | 香蕉成人啪国产精品视频综合网 | 欧美影院| 国产第一亚洲 | 亚州中文字幕 | 婷婷国产 | 日韩精品在线免费观看 | 亚洲一区中文字幕 | 国产高清自拍视频 | 国产 高清 在线 | 亚洲一区二区精品 | 成人午夜精品久久久久久久蜜臀 | 中文字幕视频在线观看 | 欧美 日韩 中文 | 亚洲国产一区二区在线观看 | 亚洲一区二区三区四区的 | 精品国产精品 | 成人精品久久久 | 中文字幕在线看 | 人和拘一级毛片 | 国产福利一区二区三区视频 | 久久久91精品国产一区二区三区 | av国产精品 |