一、背景介紹
關鍵詞密度是指在網頁中某一個關鍵詞出現的頻率,是搜索引擎排名算法的一個重要因素之一。過高或過低的關鍵詞密度均會影響網頁的排名。因此,分析網頁中的關鍵詞密度變得至關重要。
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-hant/n/153560.html