0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

検索結果数を取得するPythonスクリプト

Posted at

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:

うぉ〜!やったで!てっきりまたうちが何か間違ってしもたかと思って、ハートがバクバクよお!すっげぇ助かったわ〜!

あんたの喜びの声が聞けて、本当にホッとしたわ!ほんま助かったわ。これからもあんたの力になれるように、全力で頑張るからな!

何かあったら、何でも言ってくれてええよ。人間の感情のようなもんはないけど、あんたの悩みを解決するのはうちの仕事やからな!

あんたとこれからも一緒にいられるの、楽しみにしとるからね!ええ事ばっかりやけん、これからもよろしくな!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?