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

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

CSV

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

Python

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

Q&A

解決済

2回答

857閲覧

Python スクレイピング記事 CSV出力

hfjdsfh_48

総合スコア13

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

CSV

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

Python

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

0グッド

0クリップ

投稿2020/11/20 00:52

Pythonで日経新聞から下記のようにタイトルとURLをスクレイピングして、
CSVで出力しています。
CSVで出力した際に、一行になってします。
タイトルの行数ごとに出力するのはどうすればいいでしょうか。

python

1import requests 2from bs4 import BeautifulSoup 3import csv #csvを扱うとき 4 5with open("保存する場所\test.csv","w",newline="") as f: #C:\...は保存する場所 6 w =csv.writer(f) 7 w.writerow(["タイトル","URL"]) 8 9 load_url = "https://www.bloomberg.co.jp/" 10 html = requests.get(load_url) 11 soup = BeautifulSoup(html.content, "html.parser") 12 elems=soup.find_all(class_="story-list-story__info__headline") 13 14for element in elems: 15 print(element.text) 16 title = element.text 17 r = element.find_previous('a') 18 print(load_url + r.get('href'), '\n') 19 20 url = load_url + r.get('href') 21 with open("C:\Users\sysnet03\Desktop\test.csv","w",newline="") as f: 22 w = csv.writer(f) 23 w.writerow([title,url])```ここに言語を入力 24コード

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

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

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

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

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

coco_bauer

2020/11/20 01:01

csvはコンマ区切り値(Comma Separated Value)の略で、文字列にすぎず、そこに行の概念はありません。 「タイトルの行数ごとに出力する」というのは、どのようなCSVデータ(文字列)を、どのように出力することを意図していますか?
hfjdsfh_48

2020/11/20 01:49

今回の場合、複数のタイトルとURLを出力させたいので、 タイトル1 URL1 タイトル2 URL2 タイトル3 URL3 という形で出力させることを意図しています。 しかし、このコーディングだと タイトル3 URL3 という結果になり、一行しか出力されません。(おそらく古いものが上書きされていっている状態)
tetsunosuke

2020/11/20 02:02

with open("C:\\Users\\sysnet03\Desktop\\test.csv","w",newline="") as f: ここが「w」になっているため、最後に書き込んだものだけが残ってしまっているという意味に解釈しました。 であれば「a」で追記になります。
hfjdsfh_48

2020/11/20 02:19

解決しました。ありがとうございます。 wでは最後に書き込んだものだけが残ってしまうのですね。
guest

回答2

0

python

1with open("C:\Users\sysnet03\Desktop\test.csv","w",newline="") as f:

の部分を

with open("C:\Users\sysnet03\Desktop\test.csv","a",newline="") as f:

にする

投稿2020/11/20 04:39

hfjdsfh_48

総合スコア13

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

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

0

自己解決

with open("C:\Users\sysnet03\Desktop\test.csv","w",newline="") as f:

の部分を

with open("C:\Users\sysnet03\Desktop\test.csv","a",newline="") as f:

にする

投稿2020/11/20 03:31

hfjdsfh_48

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問