2

私はこれに似たHTMLファイルを持っています:

<html>
...
<li class="not a user"> </li>
<li class="user">
 <a href="abs" ...> </a>
</li>
<li class="user">
 <a href="bss" ...> </a>
</li>
...
</html>

上記の入力が与えられた場合、class = "user"を使用してliタグを解析し、hrefの値を出力として取得します。これはPythonでbeautifulsoupを使用して可能ですか?

私の解決策は:

data="the above html code snippet"
soup=BeautifulSoup(data)
listset=soup("li","user")
for list in listset:
   attrib_value=[a['href'] for a in list.findAll('a',{'href':True})]

明らかに、最後のアンカータグのhrefの属性値のみがリストされているというエラーがどこかにあります。

4

1 に答える 1

2

あなたのコードは問題ありません。listset- には 3 つの要素がありattrib_value、ループの反復ごとにオーバーライドされるため、プログラムの最後には、 の最後の要素である の href 値のみが含まれlistsetますbss

すべての値を保持するには、代わりにこれを試してください。

attrib_value += [a['href'] for a in list.findAll('a',{'href':True})]

ループの前に attrib_value を空のリストに初期化します ( attrib_value = [])。

于 2012-07-17T00:32:54.990 に答える