質問編集履歴

5

情報追加

2018/02/27 15:29

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
@@ -1 +1 @@
1
- beautifulsoup4 を使って、タグ内の要素を取り出したいが、行き詰っている。
1
+ beautifulsoup4 を使って、入れ子になっているタグ内の要素を取り出したいが、行き詰っている。
test CHANGED
File without changes

4

情報追加

2018/02/27 15:29

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,122 @@
4
4
 
5
5
 
6
6
 
7
+ ###変数soupに代入されているHTML
8
+
9
+ ```HTML
10
+
11
+ <li class="text-en text-c">
12
+
13
+ A
14
+
15
+ <a href="/word/en/change/#ej-14756">
16
+
17
+ <span class="a_line">
18
+
19
+ <span class="a_moji" title="changeの意味">change</span>
20
+
21
+ </span>
22
+
23
+ </a>
24
+
25
+ <a href="/word/en/of/#ej-58587">
26
+
27
+ <span class="a_line">
28
+
29
+ <span class="a_moji" title="ofの意味">
30
+
31
+ of
32
+
33
+ </span>
34
+
35
+ </span>
36
+
37
+ </a>
38
+
39
+ <a href="/word/en/air/#ej-1635">
40
+
41
+ <span class="a_line">
42
+
43
+ <span class="a_moji" title="airの意味">
44
+
45
+ air
46
+
47
+ </span>
48
+
49
+ </span>
50
+
51
+ </a>
52
+
53
+ <a href="/word/en/always/#ej-2421">
54
+
55
+ <span class="a_line">
56
+
57
+ <span class="a_moji" title="alwaysの意味">
58
+
59
+ always
60
+
61
+ </span>
62
+
63
+ </span>
64
+
65
+ </a>
66
+
67
+ <i><i>profit</i>s</i>
68
+
69
+ <a href="/word/en/in/#ej-43166">
70
+
71
+ <span class="a_line">
72
+
73
+ <span class="a_moji" title="inの意味">
74
+
75
+ in
76
+
77
+ </span>
78
+
79
+ </span>
80
+
81
+ </a>
82
+
83
+ <a href="/word/en/your/#ej-96280">
84
+
85
+ <span class="a_line">
86
+
87
+ <span class="a_moji" title="yourの意味">
88
+
89
+ your
90
+
91
+ </span>
92
+
93
+ </span>
94
+
95
+ </a>
96
+
97
+ <a href="/word/en/case/#ej-13775">
98
+
99
+ <span class="a_line">
100
+
101
+ <span class="a_moji" title="caseの意味">
102
+
103
+ case
104
+
105
+ </span>
106
+
107
+ </span>
108
+
109
+ </a>
110
+
111
+ .
112
+
113
+ </li>
114
+
115
+
116
+
117
+
118
+
119
+ ```
120
+
121
+
122
+
7
123
  ### 該当のソースコード
8
124
 
9
125
  ```python

3

情報追加

2018/02/27 15:00

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
File without changes
test CHANGED
@@ -5,8 +5,6 @@
5
5
 
6
6
 
7
7
  ### 該当のソースコード
8
-
9
-
10
8
 
11
9
  ```python
12
10
 
@@ -38,9 +36,9 @@
38
36
 
39
37
  ' ',
40
38
 
41
- **<i><i>profit</i>s</i>,
39
+ **<i><i>profit</i>s</i>,**
42
40
 
43
- **' ',
41
+ ' ',
44
42
 
45
43
  <a href="/word/en/in/#ej-43166"><span class="a_line"><span class="a_moji" title="inの意味">in</span></span></a>,
46
44
 
@@ -112,9 +110,9 @@
112
110
 
113
111
 
114
112
 
115
- contentsList[9] : <i><i>profit</i>s</i>
113
+ **contentsList[9] : <i><i>profit</i>s</i>**
116
114
 
117
- type : <class 'bs4.element.Tag'>
115
+ **type : <class 'bs4.element.Tag'>**
118
116
 
119
117
 
120
118
 
@@ -157,3 +155,21 @@
157
155
  contentsList[16] : .
158
156
 
159
157
  type : <class 'bs4.element.NavigableString'>
158
+
159
+
160
+
161
+ ### 試したこと
162
+
163
+ ```python
164
+
165
+ for index in range(len(contentsList)):
166
+
167
+ print(contentsList[index].string)
168
+
169
+ ```
170
+
171
+ 上記のコードで取得しようとしたが、contentsList[9]のみタグ内にタグがあり、文字列を抜き出せない。
172
+
173
+
174
+
175
+ 出力結果としては、contentsList[9]は、"None" が 返却される。

2

情報を追加

2018/02/27 13:18

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
File without changes
test CHANGED
@@ -20,4 +20,140 @@
20
20
 
21
21
  ###上記の contentsList を出力すると
22
22
 
23
- ['A ', <a href="/word/en/change/#ej-14756"><span class="a_line"><span class="a_moji" title="changeの意味">change</span></span></a>, ' ', <a href="/word/en/of/#ej-58587"><span class="a_line"><span class="a_moji" title="ofの意味">of</span></span></a>, ' ', <a href="/word/en/air/#ej-1635"><span class="a_line"><span class="a_moji" title="airの意味">air</span></span></a>, ' ', <a href="/word/en/always/#ej-2421"><span class="a_line"><span class="a_moji" title="alwaysの意味">always</span></span></a>, ' ', **<i><i>profit</i>s</i>, **' ', <a href="/word/en/in/#ej-43166"><span class="a_line"><span class="a_moji" title="inの意味">in</span></span></a>, ' ', <a href="/word/en/your/#ej-96280"><span class="a_line"><span class="a_moji" title="your の意味">your</span></span></a>, ' ', <a href="/word/en/case/#ej-13775"><span class="a_line"><span class="a_moji" title="caseの意味">case</span></span></a>, '.']
23
+ ['A ',
24
+
25
+ <a href="/word/en/change/#ej-14756"><span class="a_line"><span class="a_moji" title="changeの意味">change</span></span></a>,
26
+
27
+ ' ',
28
+
29
+ <a href="/word/en/of/#ej-58587"><span class="a_line"><span class="a_moji" title="ofの意味">of</span></span></a>,
30
+
31
+ ' ',
32
+
33
+ <a href="/word/en/air/#ej-1635"><span class="a_line"><span class="a_moji" title="airの意味">air</span></span></a>,
34
+
35
+ ' ',
36
+
37
+ <a href="/word/en/always/#ej-2421"><span class="a_line"><span class="a_moji" title="alwaysの意味">always</span></span></a>,
38
+
39
+ ' ',
40
+
41
+ **<i><i>profit</i>s</i>,
42
+
43
+ **' ',
44
+
45
+ <a href="/word/en/in/#ej-43166"><span class="a_line"><span class="a_moji" title="inの意味">in</span></span></a>,
46
+
47
+ ' ',
48
+
49
+ <a href="/word/en/your/#ej-96280"><span class="a_line"><span class="a_moji" title="your の意味">your</span></span></a>,
50
+
51
+ ' ',
52
+
53
+ <a href="/word/en/case/#ej-13775"><span class="a_line"><span class="a_moji" title="caseの意味">case</span></span></a>,
54
+
55
+ '.']
56
+
57
+
58
+
59
+ ###contentsList の 中身の型を調べると
60
+
61
+ contentsList[0] : A
62
+
63
+ type : <class 'bs4.element.NavigableString'>
64
+
65
+
66
+
67
+ contentsList[1] : <a href="/word/en/change/#ej-14756"><span class="a_line"><span class="a_moji" title="changeの意味">change</span></span></a>
68
+
69
+ type : <class 'bs4.element.Tag'>
70
+
71
+
72
+
73
+ contentsList[2] :
74
+
75
+ type : <class 'bs4.element.NavigableString'>
76
+
77
+
78
+
79
+ contentsList[3] : <a href="/word/en/of/#ej-58587"><span class="a_line"><span class="a_moji" title="ofの意味">of</span></span></a>
80
+
81
+ type : <class 'bs4.element.Tag'>
82
+
83
+
84
+
85
+ contentsList[4] :
86
+
87
+ type : <class 'bs4.element.NavigableString'>
88
+
89
+
90
+
91
+ contentsList[5] : <a href="/word/en/air/#ej-1635"><span class="a_line"><span class="a_moji" title="airの意味">air</span></span></a>
92
+
93
+ type : <class 'bs4.element.Tag'>
94
+
95
+
96
+
97
+ contentsList[6] :
98
+
99
+ type : <class 'bs4.element.NavigableString'>
100
+
101
+
102
+
103
+ contentsList[7] : <a href="/word/en/always/#ej-2421"><span class="a_line"><span class="a_moji" title="alwaysの意味">always</span></span></a>
104
+
105
+ type : <class 'bs4.element.Tag'>
106
+
107
+
108
+
109
+ contentsList[8] :
110
+
111
+ type : <class 'bs4.element.NavigableString'>
112
+
113
+
114
+
115
+ contentsList[9] : <i><i>profit</i>s</i>
116
+
117
+ type : <class 'bs4.element.Tag'>
118
+
119
+
120
+
121
+ contentsList[10] :
122
+
123
+ type : <class 'bs4.element.NavigableString'>
124
+
125
+
126
+
127
+ contentsList[11] : <a href="/word/en/in/#ej-43166"><span class="a_line"><span class="a_moji" title="inの意味">in</span></span></a>
128
+
129
+ type : <class 'bs4.element.Tag'>
130
+
131
+
132
+
133
+ contentsList[12] :
134
+
135
+ type : <class 'bs4.element.NavigableString'>
136
+
137
+
138
+
139
+ contentsList[13] : <a href="/word/en/your/#ej-96280"><span class="a_line"><span class="a_moji" title="yourの意味">your</span></span></a>
140
+
141
+ type : <class 'bs4.element.Tag'>
142
+
143
+
144
+
145
+ contentsList[14] :
146
+
147
+ type : <class 'bs4.element.NavigableString'>
148
+
149
+
150
+
151
+ contentsList[15] : <a href="/word/en/case/#ej-13775"><span class="a_line"><span class="a_moji" title="caseの意味">case</span></span></a>
152
+
153
+ type : <class 'bs4.element.Tag'>
154
+
155
+
156
+
157
+ contentsList[16] : .
158
+
159
+ type : <class 'bs4.element.NavigableString'>

1

情報追加

2018/02/27 13:03

投稿

threeeverytwo
threeeverytwo

スコア49

test CHANGED
@@ -1 +1 @@
1
- タグに囲まれた文字列を取り出したいが、タグの中にタグがあり、どうすればよか分からない
1
+ beautifulsoup4 を使って、タグ内の要素を取り出したいが、行き詰ってる。
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- contentsList の <i><i>profit</i>s</i> の profits のみ取り出したい。
3
+ contentsList の <i><i>profit</i>s</i> の profits のみ取り出したい。
4
4
 
5
5
 
6
6
 
@@ -10,6 +10,10 @@
10
10
 
11
11
  ```python
12
12
 
13
+ from bs4 import BeautifulSoup
14
+
15
+
16
+
13
17
  contentsList = soup.find("li", class_ = "text-en text-c").contents
14
18
 
15
19
  ```