一、背景介紹
關鍵詞密度是指在網頁中某一個關鍵詞出現的頻率,是搜索引擎排名演算法的一個重要因素之一。過高或過低的關鍵詞密度均會影響網頁的排名。因此,分析網頁中的關鍵詞密度變得至關重要。
Python作為一種高級語言,具有方便快捷、易學易用、能夠大量處理數據等優點,越來越多的人將其應用在網路爬蟲、數據分析等領域,對於關鍵詞密度分析也有著很好的支持。
二、主要流程
網頁關鍵詞密度的分析包含以下幾個基本步驟:
1. 網頁爬取:使用Python的requests和BeautifulSoup模塊對目標網頁進行爬取,提取出html文本。
2. 文本處理:對爬取的html文本進行處理,去除無效標籤(如script、style)和特殊字元(如空格、換行等),只提取文本內容。
3. 分詞:使用Python的jieba分詞對文本內容進行分詞處理,得到詞語列表。
4. 關鍵詞統計:對分詞後的詞語進行統計,計算每個詞語出現的頻率。
5. 結果展示:將統計結果展示在網頁中。
三、代碼實現
import requests
from bs4 import BeautifulSoup
import jieba
# 網頁爬取
def get_html(url):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
}
try:
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 文本處理
def clean_text(raw_html):
clean_html = BeautifulSoup(raw_html, "html.parser").text
clean_text = clean_html.replace('\n', '').replace('\r', '').replace('\t', '').replace('\xa0', '')
return clean_text
# 分詞
def jieba_cut(text):
cut_list = [i for i in jieba.cut(text) if len(i) > 1]
return cut_list
# 關鍵詞統計
def keyword_statistics(cut_list):
keyword_dict = {}
total_num = len(cut_list)
for word in cut_list:
if word not in keyword_dict:
keyword_dict[word] = 1
else:
keyword_dict[word] += 1
for i in keyword_dict:
keyword_dict[i] = keyword_dict[i]/total_num
sorted_list = sorted(keyword_dict.items(), key=lambda x: x[1], reverse=True)
return sorted_list
# 結果展示
def show_result(sorted_list):
for item in sorted_list:
keyword, density = item
print("{}: {:.2%}".format(keyword, density))
if __name__ == "__main__":
url = input("請輸入目標網頁鏈接:")
html = get_html(url)
text = clean_text(html)
cut_list = jieba_cut(text)
sorted_list = keyword_statistics(cut_list)
show_result(sorted_list)
四、結果分析
以上代碼實現了網頁關鍵詞密度的分析,並將結果以關鍵詞和出現頻率的形式展示出來。可以根據結果來分析該網頁的關鍵詞密度情況,以便進行SEO相關的工作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153560.html
微信掃一掃
支付寶掃一掃