質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

344閲覧

Python CSVファイルで改行してデータを記入したい

west_urad

総合スコア13

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/05/28 06:51

編集2023/05/29 20:15

実現したいこと

①ワード検索で任意のワードを入力
②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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

csv_writeに誤りがありそうです。

with open("test.csv","w",encoding="utf_8_sig",newline="") as csvfile:

このnewline=""は不要だと思われます。

投稿2023/05/28 07:57

neko_the_shadow

総合スコア2221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

west_urad

2023/05/29 11:15

newlineを削除して"w"を"a"に変更したら解決しました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問