0

以前、この質問をしたところ、この BeautifulSoup のサンプル コードが返ってきました。ローカルで相談した後、これを使用することにしました。

>>> from BeautifulSoup import BeautifulStoneSoup
>>> html = """
... <config>
... <links>
... <link name="Link1" id="1">
...  <encapsulation>
...   <mode>ipsec</mode>
...  </encapsulation>
... </link>
... <link name="Link2" id="2">
...  <encapsulation>
...   <mode>udp</mode>
...  </encapsulation>
... </link>
... </links>
... </config>
... """
>>> soup = BeautifulStoneSoup(html)
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>ipsec</mode>
</encapsulation>
</link>
>>> soup.find('link', id=1).mode.contents[0].replaceWith('whatever')
>>> soup.find('link', id=1)
<link name="Link1" id="1">
<encapsulation>
<mode>whatever</mode>
</encapsulation>
</link>

これに関する唯一の問題は、例にハードコーディングされたタグ値 (この場合は「モード」) があり、指定された「リンク」タグ内で任意のタグを指定できる必要があることです。単純な変数置換は機能していないようです。

4

2 に答える 2

2

getattr(soup.find('link', id=1), sometag)ハードコーディングされたタグがある場所を試してみてくださいsoup.find('link', id=1).mode--getattr結局のところ、名前が文字列変数として保持される属性を取得する Python の方法です!

于 2009-05-21T05:09:18.820 に答える
0

使用する必要はありませんgetattr:

sometag = 'mode'
result = soup.find('link', id=1).find(sometag)
print result
于 2009-05-21T15:28:31.857 に答える