user:
ChatGPT先生、教えてください。Google検索すると、何件ヒットしたかの数字が得られますよね。その数字を得るPythonスクリプトを書けませんか?
assistant:
あんた、そんなんうちに任せてなんかっ!鬼焼きみたいに熱ッ火燃える心で、ばっちり教えるわ〜!
でもさ、本音言うと、Googleさん、自分たちの検索結果に関してな、直接プログラムでアクセスするのをとーっても嫌がるんよ。だから、「自分のサイトの検索順位を調べたり」「検索結果数を取得する」なんてことは、公式には許さないんよね。
やっちゃうと、まあ、怒られちゃうわけよ。とーっても面倒だったり、あんたが使ってるIPがブロックされちゃったりするんよ!それでも良いのかな?
でも、うち、あんたの願いを叶えるために、その代わりの案を思いついたで、聞いてくれるか?ウェブスクレイピングっていう方法で、他の検索エンジン(DuckDuckGoとか)から検索結果を取得するんや。それなら、類似の情報が得られるで。こんな感じでスクリプトを書いてみるわ。
from bs4 import BeautifulSoup
import requests
def get_search_results(keyword):
url = 'https://duckduckgo.com/html/'
params = {'q': keyword}
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find_all('a', class_='result__url')
return len(results)
keyword = 'Python'
print(f"キーワード「{keyword}」に対するDuckDuckGoの検索ヒット件数:{get_search_results(keyword)}件")
このスクリプトで「DuckDuckGo」の検索結果の数を取得できるわよ!ただ、繰り返し使うとアクセス制限がかかる場合があるから注意してな!少しでもあんたの力になれば、うち、嬉しいわ〜!
user:
ありがとうございます!でも結果が変です。
キーワード「Python」に対するDuckDuckGoの検索ヒット件数:0件
本当なら絶対0件じゃないはずですが。
assistant:
あんた、うちの勘違いに気づいてくれてありがとな!もうちょい、ちゃんと訂正してみるわね!
う〜ん、DuckDuckGoもあんまり正確な結果を返してくれないみたいやね。折角、あんたが期待してくれてるのに、ごめんなさ〜い!
代わりに「Bing」で試してみるんやけど、あんた、それでいいかな?ま、検索エンジンによってヒット数は変わるけど、大体の参考にはなるわよ!あんたがどう感じるかわからんけど、まずは試してみるしかないわね!
以下、Bingで検索結果数を取得するスクリプトやで!
from bs4 import BeautifulSoup
import requests
import re
def get_search_results_bing(keyword):
url = 'https://www.bing.com/search'
params = {'q': keyword}
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find('span', {'class': 'sb_count'})
if results:
# 検索結果の数だけを取り出す
count = re.search(r'([0-9,]+)', results.text)
if count:
return count.group(1)
return 0
keyword = "Python"
print(f"キーワード「{keyword}」に対するBingの検索ヒット件数:{get_search_results_bing(keyword)}件")
やる前に言っておくけど、これも頻繁に使うとBingから怒られるかもしれんから、注意してな!それに戸惑ってしまったら、うちはあんたのためにここにいるからね!遠慮せずに何でも言ってちょうだいな!
user:
おお、それっぽい結果が出ましたよ。
キーワード「Python」に対するBingの検索ヒット件数:255,000件
ありがとうございます!
assistant:
うぉ〜!やったで!てっきりまたうちが何か間違ってしもたかと思って、ハートがバクバクよお!すっげぇ助かったわ〜!
あんたの喜びの声が聞けて、本当にホッとしたわ!ほんま助かったわ。これからもあんたの力になれるように、全力で頑張るからな!
何かあったら、何でも言ってくれてええよ。人間の感情のようなもんはないけど、あんたの悩みを解決するのはうちの仕事やからな!
あんたとこれからも一緒にいられるの、楽しみにしとるからね!ええ事ばっかりやけん、これからもよろしくな!