回答編集履歴
4
サンプルコード修正
answer
CHANGED
@@ -95,7 +95,7 @@
|
|
95
95
|
|
96
96
|
thumbnails = page.search(‘//a/img’)
|
97
97
|
if thumbnails && thumbnails.length > 0
|
98
|
-
link_to_original_image =
|
98
|
+
link_to_original_image = thumbnails[0].parent
|
99
99
|
page_of_original_image = agent.get(link_to_original_image[:href])
|
100
100
|
img = link.image_with(src: /jpg\Z/).fetch.save_as('img.jpg')
|
101
101
|
end
|
3
テキスト追加
answer
CHANGED
@@ -130,4 +130,34 @@
|
|
130
130
|
[Rubyによるクローラー開発技法](http://www.amazon.co.jp/dp/4797380357)
|
131
131
|
|
132
132
|
|
133
|
-
以上、参考になれば幸いです。
|
133
|
+
以上、参考になれば幸いです。
|
134
|
+
---
|
135
|
+
※以下追記です。
|
136
|
+
|
137
|
+
|
138
|
+
OTNさんのご回答のコードにあるように、XPathでは
|
139
|
+
"//a/img/.."
|
140
|
+
の末尾のように、".."を使えるので、私が最後に挙げたコードは
|
141
|
+
以下のように少し短くできます。
|
142
|
+
```lang-ruby
|
143
|
+
# coding: utf-8
|
144
|
+
|
145
|
+
require 'mechanize'
|
146
|
+
|
147
|
+
agent = Mechanize.new
|
148
|
+
page = agent.get('http://matome.naver.jp/odai/2141968391848272501')
|
149
|
+
|
150
|
+
links = page.search('//a/img[@class="MTMItemThumb"]/..')
|
151
|
+
|
152
|
+
if links && links.length > 0
|
153
|
+
puts "href:[" + links[0][:href] + "]" #確認のための表示
|
154
|
+
page_of_original_image = agent.get(links[0][:href])
|
155
|
+
img = page_of_original_image.image_with(src: /jpg\Z/).fetch.save_as('img.jpg')
|
156
|
+
end
|
157
|
+
```
|
158
|
+
|
159
|
+
望ましい動きをしてくれるスクレイピングのプログラムを書けるようになるためには、
|
160
|
+
今回の $1 の使い方含めて正規表現を使いこなせるようになることに加えて、
|
161
|
+
XPathも自分のものにしておくとよいと思います。
|
162
|
+
|
163
|
+
以上です。
|
2
テキスト修正
answer
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
というものであると把握しました。(違っていたら、ご指摘ください。)
|
20
20
|
|
21
21
|
|
22
|
-
また、上記の要件で「オリジナル画像」という言い方を
|
22
|
+
また、上記の要件(1)で「オリジナル画像」という言い方を
|
23
23
|
している理由は、上記の(2)の正規表現が
|
24
24
|
|
25
25
|
<a href="([^"]+)"><img src
|
1
テキスト修正
answer
CHANGED
@@ -19,14 +19,17 @@
|
|
19
19
|
というものであると把握しました。(違っていたら、ご指摘ください。)
|
20
20
|
|
21
21
|
|
22
|
+
また、上記の要件で「オリジナル画像」という言い方を
|
22
|
-
|
23
|
+
している理由は、上記の(2)の正規表現が
|
23
24
|
|
24
25
|
<a href="([^"]+)"><img src
|
25
26
|
|
26
27
|
となっていて、<a href="オリジの画像があるページのURL">の
|
27
|
-
リンクで囲まれた部分が<img>要素なので、この<img>要素
|
28
|
+
リンクで囲まれた部分が<img>要素なので、この<img>要素が
|
28
|
-
ダウンロードしたい画像のサムネイルになっているようなページ
|
29
|
+
ダウンロードしたい画像のサムネイルになっているようなページなのかな
|
29
|
-
|
30
|
+
と思ったからです。
|
31
|
+
このサムネイルからオリジ画像だけがあるページにいって、そこから
|
32
|
+
画像データを取り込みたいという状況と想定しました。
|
30
33
|
|
31
34
|
上記の想定のもとに、挙げられているコードの問題はどこかを検討しますと、
|
32
35
|
|