BeautifulSoupのfindAllではrecursiveが設定できる
ケータイのキャリアをNTTドコモからSoftBankに変えてしまったbonlifeです。
BeautifulSoupのfindAllではその子要素以下まで全て見つけてきてしまうようだ。
そこで、自分が誰の子要素かを判断するために「parent」を使う。
BeautifulSoupのfindAllについてのこんな記事がありました。アプローチとしては正しいと思いますが、別解もありますよね。
BeautifulSoupのrecursiveをFalseにする
In [3]: from BeautifulSoup import BeautifulStoneSoup In [4]: xml = """<?xml ?> ...: <list> ...: <item>test11</item> ...: <sublist> ...: <item>test21</item> ...: <item>test22</item> ...: </sublist> ...: <item>test12</item> ...: </list>""" In [5]: soup = BeautifulStoneSoup(xml) In [6]: for e in soup.findAll('item'): ...: print e ...: ...: <item>test11</item> <item>test21</item> <item>test22</item> <item>test12</item> In [7]: for L in soup.findAll('list',recursive=False): ...: for i in L.findAll('item',recursive=False): ...: print i ...: ...: <item>test11</item> <item>test12</item>
こんな感じ。