回答編集履歴
1
追記
answer
CHANGED
@@ -39,4 +39,28 @@
|
|
39
39
|
「望む結果を具体的に正確に示す」ようにしましょう。質問を編集し「こういうHTMLの場合、こういう結果を得たい」というように具体的に例示すること、および自分が上に挙げた(2),(3)の違いのように「得たい出力の仕様が相手に確実に伝わるような例を提示する」ことに留意してください。
|
40
40
|
|
41
41
|
多分そういうことを的確に説明するには「仕様を論理的に整理すること」が必要になります。またそれができれば質問前にご自分で戦略・戦術をもう少し先まで考えることもできましょう。
|
42
|
-
自分は「質問者さんの課題」が仕様の明確化が不十分なままコードを書き始めている点に思えるのです。
|
42
|
+
自分は「質問者さんの課題」が仕様の明確化が不十分なままコードを書き始めている点に思えるのです。
|
43
|
+
|
44
|
+
---
|
45
|
+
追記:質問編集を受けて。
|
46
|
+
|
47
|
+
なるほど。期待する仕様が大分わかるようになりましたが・・・自分が思うにHTMLが例示しておられる構造だとすると戦術に難ありだと思います。それは
|
48
|
+
|
49
|
+
aタグとpタグのそれぞれに対して別々にfind_allしてしまうとaとpの対応関係がわかりません。特定のaタグの次にpタグが挟まれているかどうかがわからないので例えば「健康運上昇」に対するpタグが存在しないことがわからないはずです。こうしたタグのペア関係は大抵の場合
|
50
|
+
|
51
|
+
```html
|
52
|
+
<h3>
|
53
|
+
<div><a>...</a><p>...</p></div>
|
54
|
+
<div><a>...</a><p>...</p></div>
|
55
|
+
...
|
56
|
+
</h3>
|
57
|
+
```
|
58
|
+
のようにaとpをグループ化するような上位のタグ(上の例ではdiv)があったりすると思うのですが・・・もしそれがあるならaやpをfind_allで探すのではなくdivをfind_allで列挙し、各々のdivの子供要素からa, pを探すべきだと思います。
|
59
|
+
```python
|
60
|
+
for h3 in html.find_all("h3"):
|
61
|
+
for div in h3.find_all("div"):
|
62
|
+
a = div.find("a")
|
63
|
+
p = div.find("p")
|
64
|
+
...
|
65
|
+
```
|
66
|
+
もしご質問にあるようにh3タグの直下にaとpが無秩序に並ぶ構造ならfind_all("a")やfind_all("p")ではなく、h3タグの子要素を一つづつ列挙してその要素がaなのかpなのか(あるいはそれ以外なのか)といった論理を組まなければならないと思います。
|