SerpApiを利用してGoogle検索結果をpythonで取得

· ·

概要 🔗

Google検索結果をプログラムで取得する方法は色々ありますが、一部有料のSearpApiを通じてデータを取得する

メモ 🔗

毎度適当に書いちゃいますが、configで検索キーワードを登録しておき、pythonでぶん回す感じで。 適当にtxtファイルに結果を格納してますが、普通にjsonパースして必要データを取り出したほうが楽。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import configparser, time, datetime
from serpapi import GoogleSearch

TODAY = datetime.datetime.today().strftime("%Y%m%d")

# configファイルに検索キーワードリストを格納する
cp = configparser.ConfigParser(converters = ('list': lambda x: [i.strip() for i in x.split(',')]))
cp.read('config.ini')
QUERYLIST = cp.getlist('DEFAULT', 'QUERYLIST')

for i, query in enumerate(QUERYLIST):
    search = GoogleSearch(
            {
            "q": query,
            "location": "Tokyo, Japan",
            "hl": "ja",
            "num": 100,
            "device": "mobile",
            "api_key": APIKEY})
    result = search.get_dict()
    filename = TODAY + '-' + str(i) + '.txt'
    with open(filename, "w") as f:
        f.write(str(result))
        f.close()

config.ini ファイルはキーワードのリストをカンマ区切りで入れる。APIKEYも一緒に管理してしまったほうが良いかな。

1
2
[DEFAULT]
QUERYLIST = query1,query2

出力したファイルから値を取り出す 🔗

テキストファイルにserpapi経由でデータを取得した場合、テキストファイルから検索結果を取得する場合はastを利用してパースしてデータを取り出す感じで。

1
2
3
4
5
6
7
8
import ast

output = []
with open(file) as f:
    s = f.read()
    data = ast.literal_eval(s)
    for d in data['organic_results']:
        output.append([file, d['link']])

参考 🔗

comments powered by Disqus