回答編集履歴

4

サンプルコード修正

2015/05/31 08:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -192,7 +192,7 @@
192
192
 
193
193
  if thumbnails && thumbnails.length > 0
194
194
 
195
- link_to_original_image = thumbnail.parent
195
+ link_to_original_image = thumbnails[0].parent
196
196
 
197
197
  page_of_original_image = agent.get(link_to_original_image[:href])
198
198
 

3

テキスト追加

2015/05/31 08:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -263,3 +263,65 @@
263
263
 
264
264
 
265
265
  以上、参考になれば幸いです。
266
+
267
+ ---
268
+
269
+ ※以下追記です。
270
+
271
+
272
+
273
+
274
+
275
+ OTNさんのご回答のコードにあるように、XPathでは
276
+
277
+ "//a/img/.."
278
+
279
+ の末尾のように、".."を使えるので、私が最後に挙げたコードは
280
+
281
+ 以下のように少し短くできます。
282
+
283
+ ```lang-ruby
284
+
285
+ # coding: utf-8
286
+
287
+
288
+
289
+ require 'mechanize'
290
+
291
+
292
+
293
+ agent = Mechanize.new
294
+
295
+ page = agent.get('http://matome.naver.jp/odai/2141968391848272501')
296
+
297
+
298
+
299
+ links = page.search('//a/img[@class="MTMItemThumb"]/..')
300
+
301
+
302
+
303
+ if links && links.length > 0
304
+
305
+ puts "href:[" + links[0][:href] + "]" #確認のための表示
306
+
307
+ page_of_original_image = agent.get(links[0][:href])
308
+
309
+ img = page_of_original_image.image_with(src: /jpg\Z/).fetch.save_as('img.jpg')
310
+
311
+ end
312
+
313
+ ```
314
+
315
+
316
+
317
+ 望ましい動きをしてくれるスクレイピングのプログラムを書けるようになるためには、
318
+
319
+ 今回の $1 の使い方含めて正規表現を使いこなせるようになることに加えて、
320
+
321
+ XPathも自分のものにしておくとよいと思います。
322
+
323
+
324
+
325
+ 以上です。
326
+
327
+

2

テキスト修正

2015/05/31 04:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- また、上記の要件で「オリジナル画像」という言い方を
43
+ また、上記の要件(1)で「オリジナル画像」という言い方を
44
44
 
45
45
  している理由は、上記の(2)の正規表現が
46
46
 

1

テキスト修正

2015/05/31 03:56

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,9 @@
40
40
 
41
41
 
42
42
 
43
+ また、上記の要件で「オリジナル画像」という言い方を
44
+
43
- また、上記の(2)の正規表現が
45
+ している理由は、上記の(2)の正規表現が
44
46
 
45
47
 
46
48
 
@@ -50,11 +52,15 @@
50
52
 
51
53
  となっていて、<a href="オリジの画像があるページのURL">の
52
54
 
53
- リンクで囲まれた部分が<img>要素なので、この<img>要素
55
+ リンクで囲まれた部分が<img>要素なので、この<img>要素
54
-
56
+
55
- ダウンロードしたい画像のサムネイルになっているようなページ
57
+ ダウンロードしたい画像のサムネイルになっているようなページなのかな
56
-
58
+
57
- 想定しました。
59
+ と思っからです
60
+
61
+ このサムネイルからオリジ画像だけがあるページにいって、そこから
62
+
63
+ 画像データを取り込みたいという状況と想定しました。
58
64
 
59
65
 
60
66