回答編集履歴
1
追記
test
CHANGED
@@ -81,3 +81,51 @@
|
|
81
81
|
多分そういうことを的確に説明するには「仕様を論理的に整理すること」が必要になります。またそれができれば質問前にご自分で戦略・戦術をもう少し先まで考えることもできましょう。
|
82
82
|
|
83
83
|
自分は「質問者さんの課題」が仕様の明確化が不十分なままコードを書き始めている点に思えるのです。
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
---
|
88
|
+
|
89
|
+
追記:質問編集を受けて。
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
なるほど。期待する仕様が大分わかるようになりましたが・・・自分が思うにHTMLが例示しておられる構造だとすると戦術に難ありだと思います。それは
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
aタグとpタグのそれぞれに対して別々にfind_allしてしまうとaとpの対応関係がわかりません。特定のaタグの次にpタグが挟まれているかどうかがわからないので例えば「健康運上昇」に対するpタグが存在しないことがわからないはずです。こうしたタグのペア関係は大抵の場合
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
```html
|
102
|
+
|
103
|
+
<h3>
|
104
|
+
|
105
|
+
<div><a>...</a><p>...</p></div>
|
106
|
+
|
107
|
+
<div><a>...</a><p>...</p></div>
|
108
|
+
|
109
|
+
...
|
110
|
+
|
111
|
+
</h3>
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
のようにaとpをグループ化するような上位のタグ(上の例ではdiv)があったりすると思うのですが・・・もしそれがあるならaやpをfind_allで探すのではなくdivをfind_allで列挙し、各々のdivの子供要素からa, pを探すべきだと思います。
|
116
|
+
|
117
|
+
```python
|
118
|
+
|
119
|
+
for h3 in html.find_all("h3"):
|
120
|
+
|
121
|
+
for div in h3.find_all("div"):
|
122
|
+
|
123
|
+
a = div.find("a")
|
124
|
+
|
125
|
+
p = div.find("p")
|
126
|
+
|
127
|
+
...
|
128
|
+
|
129
|
+
```
|
130
|
+
|
131
|
+
もしご質問にあるようにh3タグの直下にaとpが無秩序に並ぶ構造ならfind_all("a")やfind_all("p")ではなく、h3タグの子要素を一つづつ列挙してその要素がaなのかpなのか(あるいはそれ以外なのか)といった論理を組まなければならないと思います。
|