実現したいこと
①ワード検索で任意のワードを入力
②Googleマップ検索して、ヒットしたリストを抽出。
③リスト1つずつをGoogle検索、検索数を取得
④検索ワードと検索数をcsvに書き込みたい。
例
①東京 カフェ
②「カフェA」「カフェB」「カフェC」
③カフェA 3000000件 カフェB 40000件 カフェC 50000件
④csvに
カフェA 3000000件
カフェB 40000件
カフェC 50000件
と書き込みたい
発生している問題・エラーメッセージ
③まではできている。 ④でcsvファイルに書き込む際にカフェC 50000件しか書き出せない。改行して書き出したい。
該当のソースコード
python
1from tkinter import * 2from tkinter import ttk 3import requests 4from bs4 import BeautifulSoup 5import csv 6 7import chromedriver_binary 8from selenium import webdriver 9from selenium.webdriver.common.by import By 10 11import time 12 13def search_map():#google mapで検索 14 chromedrive_path = './chromedriver'#クロムドライバーのパス 15 driver = webdriver.Chrome(chromedrive_path) 16 keyword = text.get()#テキストボックスの内容 17 url = f'https://www.google.co.jp/maps/search/{keyword}' 18 driver.get(url)#検索 19 html = driver.page_source#html取得。 20 soup = BeautifulSoup(html, 'html.parser') 21 results = soup.find_all(attrs = {'class':'NrDZNb'}) 22 23 for result in results: 24 search(result.text) 25 26 driver.quit() 27 28def search(word):#自動検索、件数取得 29 url = f'https://www.google.co.jp/search?q={word}'#google検索 30 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42"} 31 res = requests.get(url,headers=headers) 32 res.encoding = res.apparent_encoding 33 soup = BeautifulSoup(res.text, "html.parser") 34 num = soup.find("div",attrs={"id":["result-stats"]}).text#検索結果を取得。 35 #print(word,num) 36 csv_write(word,num) 37 38def csv_write(word,num):#検索ワードと件数をCSVに保存 39 with open("test.csv","w",encoding="utf_8_sig",newline="") as csvfile: 40 write = csv.writer(csvfile) 41 write.writerow([word,num]) 42 43 44root = Tk()#ウィンドウ作成 45root.geometry("600x300")#大きさ 46root.title("検索") 47 48label = ttk.Label(root,text = '検索したいワードを入力してください。') 49text = StringVar() 50 51entry = ttk.Entry(root,textvariable=text)#入力用テキストボックス 52button = ttk.Button(root,text='検索',command=search_map) 53 54label.pack() 55entry.pack() 56button.pack() 57root.mainloop()
試したこと
①csv_write関数の中で
lists=[]
lists.append([word,num])
for list in lists:
write.writerow(list)
と書いてみたが、カフェC 50000件しか書き込まれない。
②
write.writerow(list)
write.writerow(”\n")
を加えたが、カフェC 50000件しか書き込まれない。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。