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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

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

Q&A

解決済

1回答

3278閲覧

Beautiful Soup4 で取り出したオブジェクトからタグ要素を排除してリストにしたいのですが、助けてください・・・

bin_300K

総合スコア56

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

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

0グッド

0クリップ

投稿2016/08/22 05:51

編集2016/08/22 05:52

#やりたいこと・できたこと・できないこと
・やりたいこと
Beautiful Soup4 で取り出したオブジェクトからタグ要素を排除して文字列・数値だけのリスト(もしくはデータフレームかシリーズ)にしたいです

・できたこと
Beautiful Soup4 でタグ付きのオブジェクトを取り出すところまでできました

・できないこと
タグ要素を削除して、文字列・数値だけのリストに仕立てることができません・・・

#コード

import datetime #この辺関係ないかもしれませんがimportしてしまっています。すみません import time #この辺関係ないかもしれませんがimportしてしまっています。すみません import numpy as np from pandas import Series, DataFrame import pandas as pd from bs4 import BeautifulSoup import requests url = '・・・' #株価一覧ページのURLです result = requests.get(url) x = result.content soup = BeautifulSoup(x) summary_1 = soup.find("div",{'class':'タグ名です'}) cols = summary_1.find_all('td') cols

【実行結果】

<td>文字列です</td> <td>数値1です</td> <td>数値2です</td> <td>数値3です</td> <td>数値4です</td> ・ ・ ・ <td>数値10です</td>

ここから

["文字列",数値1,数値2,数値3,数値4,....,数値10]

にしたいのですが、思いつかない状況です。どなたかわかる方助けていただけますと大変助かります。宜しくお願いしますm(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

.stringでタグの内容文字列がとれるようなので、
ループで回しながらリストに追加していけばよいでしょう(リスト内包表記でもいいです)。

python

1for col in cols: 2 col.string # これをリストに詰める

数値を数値型としたい場合はその際変換する必要があります。

投稿2016/08/22 07:09

flied_onion

総合スコア2604

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

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

bin_300K

2016/08/22 16:43

いただきましたヒントからできました! ``` data =[] for col in cols: col.string data.append(col) ``` のあとに .get_textというメソッドを使うと、無事できました!ありがとうございました!
flied_onion

2016/08/22 16:47

私が思ってたのは data =[] for col in cols: ・・data.append(col.string) # ・・はスペースと思ってください。 でしたが、できたようでなによりです。 リスト内包表記というのを使うと data = [ col.string for col in cols ] の様にも書けます。
bin_300K

2016/08/24 12:00

ありがとうございます!リスト内包表記はまだ修行が足りずうまくできていませんが、またインタラクティブシェルで試し書きしながら習得していこうと思います。大変助かりました、ありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問