回答編集履歴

3

追記

2018/02/27 16:14

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -190,7 +190,11 @@
190
190
 
191
191
  別回答も置いておきます。
192
192
 
193
+ 前提条件として liの子要素にi要素が必ず1個だけ存在する。
194
+
195
+
196
+
193
- li子要素にi要素が必ず存在する前提置けるならば以下のコードでも取得できます。
197
+ というのを仮定できるならば以下のコードでも取得できます。
194
198
 
195
199
  ```Python
196
200
 

2

別回答を追加

2018/02/27 16:14

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -185,3 +185,17 @@
185
185
  [Beautiful Soup 4.2.0 Doc. 日本語訳](http://kondou.com/BS4/)
186
186
 
187
187
  [str.strip](https://docs.python.org/3.6/library/stdtypes.html#str.strip)
188
+
189
+
190
+
191
+ 別回答も置いておきます。
192
+
193
+ liの子要素にi要素が必ず存在する前提を置けるならば。以下のコードでも取得できます。
194
+
195
+ ```Python
196
+
197
+ tag = soup.find("li", class_="text-en text-c")
198
+
199
+ print(tag.i.text.strip())
200
+
201
+ ```

1

追記

2018/02/27 16:12

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -3,3 +3,185 @@
3
3
 
4
4
 
5
5
  contentsList[index].text で取得できませんか?
6
+
7
+
8
+
9
+ ---
10
+
11
+
12
+
13
+ 2018/02/28追記
14
+
15
+
16
+
17
+ 以下のソースコードでどうでしょうか?
18
+
19
+
20
+
21
+ ```Python
22
+
23
+ # -*- coding: utf8 -*-
24
+
25
+ from bs4 import BeautifulSoup, NavigableString
26
+
27
+
28
+
29
+
30
+
31
+ def get_content():
32
+
33
+ body = """
34
+
35
+ <li class="text-en text-c">
36
+
37
+ A
38
+
39
+ <a href="/word/en/change/#ej-14756">
40
+
41
+ <span class="a_line">
42
+
43
+ <span class="a_moji" title="changeの意味">change</span>
44
+
45
+ </span>
46
+
47
+ </a>
48
+
49
+ <a href="/word/en/of/#ej-58587">
50
+
51
+ <span class="a_line">
52
+
53
+ <span class="a_moji" title="ofの意味">
54
+
55
+ of
56
+
57
+ </span>
58
+
59
+ </span>
60
+
61
+ </a>
62
+
63
+ <a href="/word/en/air/#ej-1635">
64
+
65
+ <span class="a_line">
66
+
67
+ <span class="a_moji" title="airの意味">
68
+
69
+ air
70
+
71
+ </span>
72
+
73
+ </span>
74
+
75
+ </a>
76
+
77
+ <a href="/word/en/always/#ej-2421">
78
+
79
+ <span class="a_line">
80
+
81
+ <span class="a_moji" title="alwaysの意味">
82
+
83
+ always
84
+
85
+ </span>
86
+
87
+ </span>
88
+
89
+ </a>
90
+
91
+ <i><i>profit</i>s</i>
92
+
93
+ <a href="/word/en/in/#ej-43166">
94
+
95
+ <span class="a_line">
96
+
97
+ <span class="a_moji" title="inの意味">
98
+
99
+ in
100
+
101
+ </span>
102
+
103
+ </span>
104
+
105
+ </a>
106
+
107
+ <a href="/word/en/your/#ej-96280">
108
+
109
+ <span class="a_line">
110
+
111
+ <span class="a_moji" title="yourの意味">
112
+
113
+ your
114
+
115
+ </span>
116
+
117
+ </span>
118
+
119
+ </a>
120
+
121
+ <a href="/word/en/case/#ej-13775">
122
+
123
+ <span class="a_line">
124
+
125
+ <span class="a_moji" title="caseの意味">
126
+
127
+ case
128
+
129
+ </span>
130
+
131
+ </span>
132
+
133
+ </a>
134
+
135
+ .
136
+
137
+ </li>
138
+
139
+
140
+
141
+ """
142
+
143
+ return BeautifulSoup(body, "html.parser")
144
+
145
+
146
+
147
+
148
+
149
+ def main() -> None:
150
+
151
+ soup = get_content()
152
+
153
+ contentsList = soup.find("li", class_="text-en text-c").contents
154
+
155
+ for _, data in enumerate(contentsList):
156
+
157
+ if len(data) == 0:
158
+
159
+ continue
160
+
161
+ if isinstance(data, NavigableString):
162
+
163
+ continue
164
+
165
+ print("#" * 40)
166
+
167
+ print(data.text.strip())
168
+
169
+
170
+
171
+
172
+
173
+ if __name__ == '__main__':
174
+
175
+ main()
176
+
177
+
178
+
179
+ ```
180
+
181
+
182
+
183
+ ■参考情報
184
+
185
+ [Beautiful Soup 4.2.0 Doc. 日本語訳](http://kondou.com/BS4/)
186
+
187
+ [str.strip](https://docs.python.org/3.6/library/stdtypes.html#str.strip)