回答編集履歴
2
コメントを受けての追記
answer
CHANGED
@@ -19,4 +19,17 @@
|
|
19
19
|
(foo-bar).map{|x| x.text.strip}.select{|x| x!=""}
|
20
20
|
```
|
21
21
|
|
22
|
-
1つの`div.aaa`ごとに文字列をつなげたいとかだとちょっと面倒だと思います。
|
22
|
+
1つの`div.aaa`ごとに文字列をつなげたいとかだとちょっと面倒だと思います。
|
23
|
+
|
24
|
+
#追記2
|
25
|
+
> 1つの`div.aaa`ごとに文字列をつなげたいとかだとちょっと面倒だと思います。
|
26
|
+
|
27
|
+
そうでも無かった。
|
28
|
+
```Ruby
|
29
|
+
extracted_datas =
|
30
|
+
page.xpath("//div[@class='aaa']").map do |div|
|
31
|
+
foo = div.xpath(".//text()")
|
32
|
+
bar = div.xpath(".//span[@class='bbb']//text()")
|
33
|
+
(foo-bar).map{|x| x.text.strip}.join
|
34
|
+
end
|
35
|
+
```
|
1
コメントを受けての追記
answer
CHANGED
@@ -4,4 +4,19 @@
|
|
4
4
|
page.xpath("//div[@class='aaa']/text()").map{|x| x.text.strip}.select{|x| x!=""}
|
5
5
|
```
|
6
6
|
|
7
|
-
子ノードがある場合も、それを含めるのか含めないのかを明確にすれば、なんとかなります。
|
7
|
+
子ノードがある場合も、それを含めるのか含めないのかを明確にすれば、なんとかなります。
|
8
|
+
|
9
|
+
#追記
|
10
|
+
直下でないテキストノードも対象とする場合。
|
11
|
+
|
12
|
+
```Ruby
|
13
|
+
# div.aaa の中の全テキストノードを取得
|
14
|
+
foo = page.xpath("//div[@class='aaa']//text()")
|
15
|
+
# span.bbb の中の全テキストノードを取得
|
16
|
+
bar = page.xpath("//div[@class='aaa']/span[@class='bbb']//text()")
|
17
|
+
# その差を求める
|
18
|
+
extracted_datas =
|
19
|
+
(foo-bar).map{|x| x.text.strip}.select{|x| x!=""}
|
20
|
+
```
|
21
|
+
|
22
|
+
1つの`div.aaa`ごとに文字列をつなげたいとかだとちょっと面倒だと思います。
|