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

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

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

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

2882閲覧

Beautiful soupでカラーコードを取得したい

kyonmn

総合スコア15

Beautiful Soup

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/12/23 08:10

やりたいこと

wiki/日本の鉄道ラインカラー一覧を利用して、HTMLに入っている文字と属性タグの中に入っているカラータグを取り出して、JSONを作成したいと考えています。そのために、Beautiful soupを利用したスクレイピングを行っています。

問題

<td style="background:#00B2E5;"></td>などtdタグの中にある色コードをリストとし取得したいのですが、仕様上難しく、解決策を探りたいです。

完成物のイメージ

html

1<table class="wikitable"> 2<caption>東京近郊地区における路線案内色と車体色 3</caption> 4<tbody><tr> 5<th style="width:auto;">路線・系統名 6</th> 7<th>路線記号 8</th> 9<th colspan="2"><span class="nowrap">案内色<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[1]</a></sup><sup id="cite_ref-sobuboso_3-0" class="reference"><a href="#cite_note-sobuboso-3">[2]</a></sup></span> 10</th> 11<th colspan="2">車体色(JR車両の色のみ記載) 12</th></tr> 13<tr> 14<td><a href="/wiki/%E4%BA%AC%E6%B5%9C%E6%9D%B1%E5%8C%97%E7%B7%9A" title="京浜東北線">京浜東北線</a><a href="/wiki/%E6%A0%B9%E5%B2%B8%E7%B7%9A" title="根岸線">根岸線</a> 15</td> 16<td>JK 17</td> 18<td style="background:#00B2E5;">&nbsp; 19</td> 20<td><b>水色</b> 21</td> 22<td style="background-color:#ccc;"><a href="/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:LineColor_KeihinTohoku.svg" class="image"><img alt="LineColor KeihinTohoku.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/5/58/LineColor_KeihinTohoku.svg/22px-LineColor_KeihinTohoku.svg.png" decoding="async" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/58/LineColor_KeihinTohoku.svg/33px-LineColor_KeihinTohoku.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/58/LineColor_KeihinTohoku.svg/44px-LineColor_KeihinTohoku.svg.png 2x" data-file-width="500" data-file-height="500" width="22" height="22"></a> 23</td> 24<td><b>スカイブルー</b>(国鉄<a href="/wiki/%E9%9D%9224%E5%8F%B7" title="青24号">青24号</a><sup id="cite_ref-5" class="reference"><a href="#cite_note-5">[注 3]</a></sup> 25</td></tr> 26<tr> 27<td><a href="/wiki/%E4%B8%AD%E5%A4%AE%E7%B7%9A%E5%BF%AB%E9%80%9F" title="中央線快速">中央線快速</a><br><a href="/wiki/%E9%9D%92%E6%A2%85%E7%B7%9A" title="青梅線">青梅線</a><a href="/wiki/%E4%BA%94%E6%97%A5%E5%B8%82%E7%B7%9A" title="五日市線">五日市線</a> 28</td> 29<td>JC 30</td> 31<td style="background:#F15A22;">&nbsp; 32</td> 33<td><b></b> 34</td> 35<td style="background-color:#ccc;"><a href="/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:LineColor_ChuoRapid.svg" class="image"><img alt="LineColor ChuoRapid.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LineColor_ChuoRapid.svg/22px-LineColor_ChuoRapid.svg.png" decoding="async" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LineColor_ChuoRapid.svg/33px-LineColor_ChuoRapid.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/ca/LineColor_ChuoRapid.svg/44px-LineColor_ChuoRapid.svg.png 2x" data-file-width="500" data-file-height="500" width="22" height="22"></a> 36</td> 37<td><b>オレンジバーミリオン</b>(国鉄<a href="/wiki/%E6%9C%B1%E8%89%B21%E5%8F%B7" title="朱色1号">朱色1号</a>38</td></tr> 39</table>

JSON

1{ 2'京浜東北線・根岸線':'#00B2E5' 3'中央線快速 青梅線・五日市線':'#F15A22' 4}

現在のコード

python3

1import requests 2from bs4 import BeautifulSoup 3# Webページを取得して解析する 4 5load_url = "https://ja.wikipedia.org/wiki/日本の鉄道ラインカラー一覧" 6html = requests.get(load_url) 7soup = BeautifulSoup(html.content, "html.parser") 8a=[] 9# HTML全体を表示する 10chap2 = soup.find_all(class_="wikitable") 11#chap3=chap2.find_all("td") 12for element in chap2: 13 for element2 in element.find_all("td"): 14 for element3 in element2.find_all("a"): 15 a.append("'"+element3.text+"'") 16print(a) 17

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

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

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

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

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

jeanbiego

2020/12/23 10:17

>仕様上難しく、解決策を探りたいです。 具体的な問題点は何ですか?
kyonmn

2020/12/23 10:49

具体的な問題点は、Beautiful soupは仕様上、タグ内部の属性を取得するためのものではない点です。今回はタグ内部の属性データを引き出したいため、scrapyなど他の方法も使おうと調べましたが、結果が出ず分かりませんでした。
otn

2020/12/23 10:53

具体的に何をしたいのかよくわかりません。色情報はどこから取るのですか?
kyonmn

2020/12/23 10:56

「問題」に記述してある通り、例えばHTMLの票タグにある <td style="background:#00B2E5;"></td>から「#00B2E5」を取り出そうとしています。
guest

回答1

0

タグの属性を取得するのはgetです。

Python

1td = tdタグを特定するコード 2print(td.get("style")) #=> 'background:#00B2E5;'

投稿2020/12/23 11:10

otn

総合スコア84800

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問