teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

サンプルコード修正

2015/05/31 08:11

投稿

jun68ykt
jun68ykt

スコア9058

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 = thumbnail.parent
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

テキスト追加

2015/05/31 08:11

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2015/05/31 04:33

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2015/05/31 03:56

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -19,14 +19,17 @@
19
19
  というものであると把握しました。(違っていたら、ご指摘ください。)
20
20
 
21
21
 
22
+ また、上記の要件で「オリジナル画像」という言い方を
22
- また、上記の(2)の正規表現が
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