回答編集履歴

1

追記

2019/06/10 09:35

投稿

karamarimo
karamarimo

スコア2551

test CHANGED
@@ -23,3 +23,27 @@
23
23
  });
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ ## 追記
30
+
31
+
32
+
33
+ スクレイピングしようとしているサイトがSPAではないので、ページ遷移するとtampermonkeyのuserscriptも最初から実行されることになります。解決策としては以下のようなものが考えられます。
34
+
35
+
36
+
37
+ どうしてもブラウザー上のスクリプトからやりたいのであれば、ブラウザ自体に情報を保存できるlocalStorage(or IndexedDB)を使用する方法が考えられます。例えば、`searchWords`の何番目まで処理し終わったのかをlocalStorageに保存し、userscriptの最初でlocalStorageをチェックしてどのwordを処理するか決定できます。
38
+
39
+
40
+
41
+ スクレイピングはブラウザー外のプログラムで行うのが一般的であり、特に複数ページに渡ってスクレイピングしたい場合はこちらのほうが簡単だと思います。プログラムからHTTPリクエストしてレスポンスをパースし情報を取り出すタイプと、ブラウザーをシミュレートあるいは本物のブラウザーを外から操作してページを読み込み、情報を取り出すタイプの2つが主にあります。
42
+
43
+
44
+
45
+ 前者はJavaScriptを実行できないため、ページ内の欲しい部分がJavaScriptで動的に生成されている場合は使えません。しかし今回スクレイピングしようとしているページのレスポンスのHTMLを見ると欲しい情報がすでに含まれているので、問題ありません。だいだいどのプログラミング言語でもHTTPリクエスト、HTMLパーサーライブラリを使えば簡単にできます。
46
+
47
+
48
+
49
+ 後者はNode.jsではPuppeteer、PhantomJS、PythonであればSeleniumなどのライブラリがあります。