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

回答編集履歴

2

補足

2017/02/01 13:18

投稿

退会済みユーザー
answer CHANGED
@@ -31,7 +31,7 @@
31
31
  ```
32
32
  考えてみました。収集した記事のタイトルとURLは「URL集」に保存されます。
33
33
  ###補足
34
- Neverまとめの構造を理解していませんでした。よく見てみると
34
+ Neverまとめを理解していませんでした。よく見てみると
35
35
  開いたときに出てくる記事が全てではないということが分かりました。
36
36
 
37
37
  変更

1

補足

2017/02/01 13:18

投稿

退会済みユーザー
answer CHANGED
@@ -29,4 +29,44 @@
29
29
  }
30
30
 
31
31
  ```
32
- 考えてみました。収集した記事のタイトルとURLは「URL集」に保存されます。
32
+ 考えてみました。収集した記事のタイトルとURLは「URL集」に保存されます。
33
+ ###補足
34
+ Neverまとめの構造を理解していませんでした。よく見てみると
35
+ 開いたときに出てくる記事が全てではないということが分かりました。
36
+
37
+ 変更
38
+ ```Ruby
39
+ #encoding : utf-8
40
+ require"open-uri"
41
+ require"certified"
42
+
43
+ base = "https://matome.naver.jp/topic/1Lv56"
44
+
45
+ url = base
46
+
47
+ puts "作業開始"
48
+
49
+ loop{
50
+ sleep(4)
51
+ page = open(url, &:read)
52
+ title = page.scan(%r|<a href="(.+?)" >(.+?)</a></h3>|)
53
+
54
+ File.open("URL集.txt", "a") do |f|
55
+ title.each do |element|
56
+ f.puts("#{element[1]}" + "\t" + "#{element[0]}")
57
+ end
58
+ end
59
+
60
+ next_page = page.scan(%r|<strong>(.+?)</strong>|).flatten[0].to_i + 1
61
+ list = page.scan(%r|<a href="#" onclick="(.+?)" >(\d+?)</a>|).map{|e| e[1].to_i}
62
+ if list.include?(next_page)
63
+ url = base + "?page=" + next_page.to_s
64
+ puts "次は#{next_page}ページ目です。"
65
+ else
66
+ break
67
+ end
68
+ }
69
+ ```
70
+ 各トピックのURLをとることができれば、eachで配列から一つずつbaseに入れて
71
+ 動かせます。どうやって各トピックのURLを集めるのかという問題がありますが。
72
+ 記事被りについては、別で対応した方が楽だろうと私個人は思います。