Google検索上位サイト情報の自動収集ツールの作成方法

1. 目的と概要

 

moun45.hatenablog.com

 

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検索を実行
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 = webdriver.Chrome(executable_path="path/to/chromedriver")
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)
top_keywords = word_freq.most_common(5) # 上位5つのキーワードを抽出

# 結果の出力
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