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

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

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

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

Q&A

解決済

2回答

971閲覧

python WEBページのすべての表をtxt出力したい。

PEMPEM

総合スコア29

Python

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

0グッド

0クリップ

投稿2021/10/06 06:54

前提・実現したいこと

PYTHONにてWEBページの全ての表をtxt出力したい

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

----> 8 table_list.to_csv('desktop/to_csv_out.txt') AttributeError: 'list' object has no attribute 'to_csv'

該当のソースコード

#webページから表を抜き出すプログラム import pandas as pd #urlを(””)内に入力 table_list = pd.read_html("https://ja.wikipedia.org/wiki/Xeon") print(table_list) #保存したいルート・ファイル名・形式を指定。CSVで文字化けする場合はtxtを指定 table_list.to_csv('desktop/to_csv_out.txt')

試したこと

printでは全ての表は表示できています。
(表以外も表示していますが)
table_list[36].to_csv('desktop/to_csv_out.txt')
と表の番号を指定すればtxt出力できました。

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

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

書かれたコードを動くようにするには以下に変更します。

python

1with open('desktop/to_csv_out.txt', 'w') as f: 2 for df in table_list: 3 df.to_csv(f)

ただし、カレントディレクトリにdesktopというサブディレクトリがあることが前提です。

python

1with open('to_csv_out.txt', 'w') as f: 2 for df in table_list: 3 df.to_csv(f) 4 5import os 6print(os.getcwd())

というようにすれば、print(os.getcwd())で表示されるディレクトリにファイルが作成されますので、そのほうが確実でしょう。

投稿2021/10/06 07:10

ppaul

総合スコア24666

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

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

PEMPEM

2021/10/06 07:48

連絡が遅くなり申し訳ありません。 UnicodeEncodeError: 'cp932' codec can't encode character '\xa0' in position 69: illegal multibyte sequence に嵌まっていました。 ご提示いただきましたコードに変更し無事にtxt出力できました。 ありがとうございました。
PEMPEM

2021/10/06 08:17

ちなみに、このように修正を行いました。 #webページから表を抜き出すプログラム import pandas as pd #urlを(””)内に入力 table_list = pd.read_html("https://ja.wikipedia.org/wiki/Xeon") with open('desktop/to_csv_out.txt', 'w') as f: #エンコードエラーを無視する。 f = open('desktop/to_csv_out.txt', 'w', encoding='CP932', errors='ignore') for df in table_list: df.to_csv(f) import os print(os.getcwd()) エンコードエラーを無視するコードを入れて、無理やりエラーを出さなくしています。
guest

0

AttributeError: 'list' object has no attribute 'to_csv'

'list' オブジェクトには 'to_csv'というアトリビュートはない、とおっしゃってます。
これをどーにかしよう。

そして、
table_listにはなにが入っていて、それをどういうふうにしたいのか説明しよう

投稿2021/10/06 06:59

y_waiwai

総合スコア87800

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

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

PEMPEM

2021/10/06 07:10

ありがとうございます。 すみませんよく理解できていないため、質問に対しての回答があっていないかもしれませんが table_listにはWEBページから表をCSVで取得しています。 table_listを[]で番号指定すると、番号指定されえたcsvデータは取得出来ており、 desktopにto_csv_out.txtのファイルもできております。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問