BeautifulSoupを利用して、下記のようなdom(一部抜粋)からpタグを取得しつつ、
tableタグ内の要素かを判定したいと考えております。
<table><tbody><tr> <td><p></p> </td> <td><p>項目</p> </td> <td><p>対象項目</p> </td> <td><p>担当</p> </td></tr> <tr> <td><p>①</p> </td> <td><p>掃除当番</p> </td> <td><p>教室</p> <p>中庭</p> </td> <td><p>グループA班</p> </td></tr> </tbody></table>
# 親要素を確認するも、<table>とは返ってこず。。。。。 t = soup.find('table') print(t.find_all('p')[0].parent) out: <td><p></p> </td>
下記を参考にしながら検討しましたが、自己解決できずにおります。
https://www.pynote.info/entry/beautiful-soup-access-dom-tree
大変稚拙な質問となり恐縮ではございますが、tableタグ内の要素であることを判定するにはどうしたら良いでしょうか?
ご教示いただけましたら幸甚でございます。
何卒よろしくお願い申し上げます。
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all
「このfind_all()メソッドは、タグの子孫を調べ、フィルターに一致するすべての子孫を取得します。」
とあるので、
t = soup.find('table')←これはtable要素を探して取得している
t.find_all('p')←これは上で見つけたTABLE要素から始めて、その子孫の中のP要素を探して全て取得している
つまり、Daregadaさんのおっしゃるとおり、ここで見つかったP要素は全てTABLE要素の子孫にあたります。
out:された内容については、見つかったP要素先頭の親を最終的にprintしてるのですが、P要素の親はTD要素なので、TD要素が表示されています。もしTABLE要素をprintしたいのであれば、今回のHTMLだとP要素の親(TD)の親(TR)の親(TBODY)の親(TABLE)に当たります。
稚拙な質問ではありませんが、理解してから使ってください。
回答1件
あなたの回答
tips
プレビュー