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

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

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

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

CSV

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

510閲覧

pythonでcsv追加書き込みの改行を削除したい

domesukt

総合スコア7

スクレイピング

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

CSV

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/08/05 13:23

編集2019/08/05 13:25

前提・実現したいこと

pythonでスクレイピングしたリストをcsvに書き込むコードを作成しました。
リストを前回のcsvに追記したいのですが、前回のデータと今回の書き込みデータの間に一行改行されてしまいます。
改行なく追記するにはどうしたらよいのでしょうか。
(初めに書き出したデータは要素0番目から入っています。)

発生している問題・エラーメッセージ

2019/08/05 「壊れた国に歯止め」山本氏が描く野党共闘 2019/08/05 佐賀知事怒り フル規格「急に決められても」 2019/08/05 かんぽ不正販売、昨年6月には幹部が把握 2019/08/05 ソウル市、マラソン協賛からミズノ除外 2019/08/05 客室乗務員6割「盗撮された経験ある」 2019/08/05 預金が下ろせない「銀行ハラスメント」とは 2019/08/05 全英Vの渋野「プレーオフはダメ」腹くくる 2019/08/05 全英Vの渋野、小学時代はソフト上野に夢中 2019/08/05 「壊れた国に歯止め」山本氏が描く野党共闘 2019/08/05 佐賀知事怒り フル規格「急に決められても」 2019/08/05 かんぽ不正販売、昨年6月には幹部が把握 2019/08/05 ソウル市、マラソン協賛からミズノ除外 2019/08/05 客室乗務員6割「盗撮された経験ある」 2019/08/05 預金が下ろせない「銀行ハラスメント」とは 2019/08/05 全英Vの渋野、小学時代はソフト上野に夢中 2019/08/05 「プレーオフはダメ」腹くくる 強気で栄冠

該当のソースコード

python

1import urllib3 2from bs4 import BeautifulSoup 3import csv 4from datetime import datetime 5import numpy as np 6 7#毎〇新聞のニュース一覧を取得 8url = "https://mainichi.jp/" 9 10#BeautifulSoupでhtmlをテキスト化 11http = urllib3.PoolManager() 12r = http.request('GET', url) 13soup = BeautifulSoup(r.data, "html.parser") 14 15#htmlからニュース一覧を抽出 16tag_mainbox = soup.select_one(".main-box") 17tag_listA = tag_mainbox.select_one(".list-typeA") 18news_tag = tag_listA.findAll("a") 19 20addlist = [[]] 21 22for news_txt in news_tag: 23 news_csv = news_txt.text 24 num = datetime.now() #日付習得 25 num = "{0:%Y/%m/%d}".format(num) 26 addlist.append([num, news_csv]) 27 28#addlistの先頭の空リストを埋める 29addlist = np.roll(addlist, -1) 30 31#csvに書き込み 32f = open("test.csv","a") 33writecsv = csv.writer(f, lineterminator='\n') 34writecsv.writerows(addlist) 35f.close()

試したこと

上記のコードの通り、リストの要素0番目が空であることが問題だと思い、要素番号をずらしましたが解決しません。

補足情報(FW/ツールのバージョンなど)

python3

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

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

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

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

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

guest

回答1

0

ベストアンサー

addlist に空のリストを1つ作ってしまっているのが原因です。
以下のように変更してみてください。

diff

1- addlist = [[]] 2+ addlist = []

投稿2019/08/05 13:37

tiitoi

総合スコア21956

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

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

domesukt

2019/08/05 22:07

ご回答ありがとうございました。 二次元で書き込んでいたつもりだったのですが、必要なかったうえにそもそも定義が間違っていたのですね。 ご指摘の修正を行ったところ解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問