Python x データ分析 | ワードクラウドを用いたデータ可視化_スクレイピング活用
- 2023.06.25
- Python

こんにちは!
今回は前回の応用として、Webスクレイピング結果をワードクラウド化するロジックを作ってみます。
スクレイピング
スクレイピング(Scraping)は、Webページからデータを自動的に収集するプロセスを指します。
これは、ウェブサイト上に公開されている情報を抽出し、データベースやスプレッドシートなどの形式で保存・分析するために広く使用されています。
今回はpythonで解析する都合上、BeautifulSoupとrequestsを用います。
サンプルコード
以下がサンプルコードです。
前回の記事のコードを改造しています。(前回)
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from wordcloud import STOPWORDS
import MeCab
import requests
from bs4 import BeautifulSoup
#------------------------------------------------------------
# スクレイピング
#------------------------------------------------------------
def scraping(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
text = ""
articleList = soup.find_all(["p","h1","h2","h3","h4","div"])
for article in articleList:
text = text + article.get_text()
return text
#------------------------------------------------------------
# ワードクラウド作成
#------------------------------------------------------------
def make_wordcloud(flg,Web_Site):
# 形態素解析器としてMeCabを初期化します
mecab = MeCab.Tagger()
if flg == 0 :
# ワードクラウドに表示するテキストデータを用意します
with open('text_data.txt', 'r', encoding='utf-8') as file:
text = file.read()
elif flg ==1:
text = scraping(Web_Site)
# 使用するフォントのパスを指定します
font_path = 'C:/Windows/Fonts/meiryo.ttc'
# テキストを形態素解析して、単語のリストを取得します
parsed_text = mecab.parse(text).split('\n')
words = []
print(parsed_text)
for line in parsed_text:
if line == 'EOS':
break
else:
elements = line.split('\t')
if len(elements)==2 and elements[1].startswith('名詞,一般'):
word = elements[0]
words.append(word)
#除外ワード
NGWORD_Lists = ['私','彼ら','そこ','ここ','あそこ','たち','こと','あれ','これ','それ','ため','もの','ん','の','よう','これら']
for NGWORD in NGWORD_Lists:
STOPWORDS.add(NGWORD)
# ワードクラウドを作成します
wordcloud = WordCloud(width=800, height=400, font_path=font_path,background_color='white').generate(' '.join(words))
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
if __name__== "__main__":
#------------------------------------------------------------
# 設定
# 0 : text_data.txtから読み取り
# 1 : Webサイトから読み取り
#------------------------------------------------------------
flg = 1
Web_Site = "https://www.aozora.gr.jp/cards/000081/files/470_15407.html"
make_wordcloud(flg,Web_Site)
検証
今回はネットで公開されている「青空文庫」からいくつかピックアップしてみます。
セロ弾きのゴーシュ / 宮沢賢治

こころ / 夏目漱石

赤い部屋 / 江戸川乱歩

Webページからデータを取得できていることが分かりました。
今回は以上です!
エラー: データの取得に失敗しました。
-
前の記事
Python x データ分析 | ワードクラウドを用いたデータ可視化_Mecabによる形態素分析 2023.06.24
-
次の記事
python x 死活監視 | ping実行とLINE通知 2023.06.28