人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PythonライブラリのBeautiful Soupでセレクトボックスのselecedなオプション取得する方法を教えてください。

●質問者: dasako
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Python オプション セレクト ボックス ライブラリ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント ベストアンサー

一例

from BeautifulSoup import BeautifulSoup
#
doc = """
<html><head><title>BeautifulSoup</title></head><body>
<select name="s1" size="5" multiple>
<option value="101">a</option>
<option value="102" selected>b</option>
<option value="103">c</option>
<option value="104" selected>d</option>
<option value="105">e</option>
</select>
<select name="s2">
<option value="201">aa</option>
<option value="202" selected>bb</option>
</select>
</body></html>"""
#
soup = BeautifulSoup(doc)
for sel in soup.findAll('select'):
 print sel['name']
 for opt in sel.findAll('option', selected="selected"):
 print opt['value'], opt.renderContents()

結果出力

s1
102 b
104 d
s2
202 bb

※ selected="selected" がポイント

◎質問者からの返答

これはすでに試しました。

結果出力のようにはなりません。

私の環境はPython2.6+BeautifulSoup 3.1です。

>その申されぶりからは、私の書いたコードそのままではなく、

>ご自身で作られた物での事だと思われますが、違いますか?

PythonShellにてご提示いただいたコードそのまま試しています。

selected="selected"を書いたままだと何もprintされず

selected="selected"を削除するとoptionが全部printされますので

エラーになっているわけではありません。

※追記

kn1967の言われるとおりBeautifulSoupを3.0.7aに落としたら

selected取れるようになりました!

BeautifulSoup3.1系はまだやめたほうがいいということですね。

ちなみにBeautifulSoup3.1系はcheckboxのcheckedも取れません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ