OS Windows 10 Pro 64bit
Python 3.6.8
お世話になっております。
<〇〇産> <野菜> <品名>トマト</品名> <価格>100</価格> </野菜> <野菜> <品名>あまいトマト</品名> <価格>200</価格> </野菜> <野菜> <品名>やわらかいトマト</品名> <価格>300</価格> </野菜> </〇〇産>
このような形式のデータがあり、これを
〇〇産 トマト 100 〇〇産 あまいトマト 200 〇〇産 やわらかいトマト 300
このような出力結果にしてcsvに出力しようとしています。
産地一覧 = soup.find_all("〇〇産") 野菜一覧 = soup.find_all("野菜") 品名一覧 = soup.find_all("品名") 価格一覧 = soup.find_all("価格") for 産地 in 産地一覧: for 野菜 in 野菜一覧: for 品名 in 品名一覧: for 価格 in 価格一覧:
のようにした場合、SQLでいうcross joinのような結果となってしまいます。このように「1度取得した親を子の数だけ繰り返し出力したい」かつ「複数の子(兄弟?)を取得したい」場合はどのようにアプローチすれば良いでしょうか?宜しくお願い致します。
産地一覧.find_all("野菜")のようにすれば子要素が取得できるはずです。
ご回答ありがとうございます。
産地一覧.find_all("野菜")で野菜の一覧は取得できたのですが、その下の階層にある品名・価格の取得方法が分かりませんでした。
産地一覧.find_all("野菜")
産地一覧.find_all("品名")
産地一覧.find_all("価格")
このようにするとfind_allの中身を取り出すのにforを使わないといけなくて、forを使うと全組み合わせを取得してしまう状態です。
同様にすれば良いです。親要素.find_all(子要素のタグ名)のようにすれば良いということです。
色々試して理解しましょう。
ありがとうございます。try & errorで漸く解決に至りました。頂いたアドバイスが無ければ解決にたどり着けませんでした。本当にありがとうございました。
回答1件
あなたの回答
tips
プレビュー