1. 目的と概要
2. 必要なライブラリとツール
- ライブラリ:Requests、Beautiful Soup、Selenium、Natural Language Toolkit (NLTK)
- ツール:Google Chrome WebDriver
3. 手順 3.1. 検索キーワードの入力
- ユーザーから検索キーワードを受け取る。
- プログラム内でGoogle検索を実行する。
3.2. 検索結果の取得
- Requestsライブラリを使用してGoogle検索結果ページを取得する。
- Beautiful Soupを使ってHTMLを解析し、検索結果のリンクを抽出する。
3.3. サイト情報の収集
- 取得したリンクを順に開き、サイトのタイトル、URL、概要を抽出する。
- 必要に応じてSeleniumを使用してページ遷移を行う。
3.4. 自然言語処理による情報の分析
- 収集した概要文をNLTKを使って形態素解析し、キーワードを抽出する。
- キーワードの出現頻度を数え上げ、重要度を算出する。
3.5. 結果の出力
- 収集した情報と重要度をまとめ、CSVやテキストファイルとして保存する。
- 必要に応じて、グラフや可視化ツールを使用して結果を視覚化する。
4. 具体例
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from collections import Counter
# 検索キーワードを取得
keyword = input("検索キーワードを入力してください:")
# Google検索を実行
url = "https://www.google.com/search?q=" + keyword
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 検索結果のリンクを取得
links = soup.find_all("a")
search_results =
for link in links:
href = link.get("href")
if href.startswith("/url?q="):
search_results.append(href.split("/url?q=")[1].split("&")[0])
# サイト情報の収集
site_info =
for result in search_results:
driver.get(result)
title = driver.title
url = driver.current_url
description = driver.find_element_by_tag_name("meta[name='description']").get_attribute("content")
site_info.append*1
driver.quit()
# 自然言語処理によるキーワードの抽出と重要度の算出
all_words = []
stop_words = set(stopwords.words("english"))
for info in site_info:
words = word_tokenize(info[2])
words = [word.lower() for word in words if word.isalnum()]
words = [word for word in words if word not in stop_words]
all_words.extend(words)
word_freq = Counter(all_words)
# 結果の出力
print("検索結果の上位サイト情報:")
for i, info in enumerate(site_info):
print(f"{i+1}. {info[0]} - {info[1]}")
print(f" 概要:{info[2]}")
print("\nキーワードの重要度:")
for word, freq in top_keywords:
print(f"{word}: {freq}")
このコードは、ユーザーが検索キーワードを入力し、Google検索結果ページから上位のサイト情報を取得し、自然言語処理によってキーワードの重要度を算出します。
*1:title, url, description