回答編集履歴

1

コメントを受けて追記

2019/12/01 16:12

投稿

shirai
shirai

スコア1290

test CHANGED
@@ -15,3 +15,143 @@
15
15
  printの出力結果は aつなげるbつなげるcつなげる ... yつなげるz となります。
16
16
 
17
17
  つなぎに文字を使いたくない場合は'つなげる'を''に変えてください。
18
+
19
+
20
+
21
+ # コメントを受けて追記
22
+
23
+
24
+
25
+ じゃあこんな感じでどうですかね。
26
+
27
+
28
+
29
+ ```python
30
+
31
+ content = []
32
+
33
+ for url in urls:
34
+
35
+ driver.get(url)
36
+
37
+ content.append('つなげる'.join([article_tag.text[2:-1] for article_tag in driver.find_elements_by_class_name('wrap_box')[2].find_elements_by_tag_name('article')]))
38
+
39
+ ```
40
+
41
+
42
+
43
+ 内包表記を使わずに分かりやすく書くなら、
44
+
45
+ ```python
46
+
47
+ content = []
48
+
49
+ for url in urls:
50
+
51
+ this_page_text = ''
52
+
53
+ driver.get(url)
54
+
55
+ for article_tag in driver.find_elements_by_class_name('wrap_box')[2].find_elements_by_tag_name('article')])):
56
+
57
+ this_page_text += article_tag.text[2:-1]
58
+
59
+ content.append(this_page_text)
60
+
61
+ ```
62
+
63
+
64
+
65
+ スライスは2:-1じゃなくて3:-2かもしれないです。
66
+
67
+ ¥nが1文字として判定されるか2文字として判定されるか
68
+
69
+ やってみないとよく分からないです。
70
+
71
+
72
+
73
+ ---
74
+
75
+
76
+
77
+ 私は直接DOMを見ていないので推測で答えますが、
78
+
79
+ 各article配下は
80
+
81
+ ```html
82
+
83
+ <article>
84
+
85
+ <p>1</p>
86
+
87
+ <p>テキスト</p>
88
+
89
+ <p></p>
90
+
91
+ </article>
92
+
93
+ ```
94
+
95
+ あるいは
96
+
97
+ ```html
98
+
99
+ <article>
100
+
101
+ 1
102
+
103
+ テキスト
104
+
105
+
106
+
107
+ </article>
108
+
109
+ ```
110
+
111
+ といった具合に目的のテキスト以外に余計なものが何かしら加わっているのでないでしょうか。
112
+
113
+ それらをまんま繋げてやると1\nテキスト\n2\nテキスト\n3\nテキストが出てきてます。
114
+
115
+
116
+
117
+ つまり1つのarticle要素に含まれているテキストは「数字¥nテキスト¥n」の可能性が高いです。
118
+
119
+ スライスを使ってこれらを取り除きましょう。
120
+
121
+
122
+
123
+ ページ毎に微妙に異なったり、数字が2桁になるようでしたら、
124
+
125
+ 大人しく正規表現で取り除いてやるといいでしょう。
126
+
127
+ 以下に例を乗っけておくので考えてみてください。
128
+
129
+
130
+
131
+ ちなみにreのsubという関数は、第3引数の文字列のうち、第1引数の正規表現に当てはまる文字列を、全て第2引数に置換する関数です。
132
+
133
+
134
+
135
+ ```python
136
+
137
+ import re
138
+
139
+
140
+
141
+ text = 'aa10aiiiu9uu¥n¥neee¥nooo'
142
+
143
+ print(text) # aa10aiiiu9uu¥n¥neee¥nooo
144
+
145
+
146
+
147
+ new_text = re.sub('([0-9]|¥n)', '', text)
148
+
149
+ print(new_text) # aaaiiiuuueeeooo
150
+
151
+ ```
152
+
153
+
154
+
155
+ pythonのreにはsub以外にも様々な正規表現に関する関数が用意されているので、
156
+
157
+ 気になったら調べてみてください。