会員制サイトのページの更新をチェックするような処理をしたいです。
私のアカウントでログインし、目的のページにアクセス、そのページの情報を返したいです。
ブラウザに表示することなく以上の処理を行いたいです。
どの言語を使えばいいのかもわからないのですが、スクリプトのようなものを使いたいと思っております。
どうすればよいでしょうか。
よろしくお願いいたします。
会員制サイトのページの更新をチェックするような処理をしたいです。
Re: 会員制サイトのページの更新をチェックするような処理をしたいです。
やりたい条件によってアプローチが異なる気がしますね。
1.
まずそのサイトがAPIを公開しているかどうか。公開していれば、(Twitterクライアントを自作するのと同じように、)チェック用のクライアントを自作するのがよいと思います。
※これ以外の方法だと、アクセスのしかたや頻度によっては「不正アクセス」扱いになる可能性があるので注意してください。
言語は、サイトによって、APIと共にメジャーな言語でのサンプルが公開されている場合があるので参考にします。
2.
次に、ブラウザは立ち上げっぱなしだが、ブラウザが背面にあっても「通知」してくれればよい、という場合。
(「ブラウザに表示せずに」とありましたが、一応「背面」ということで。)
この場合は、Javascriptでwindowの名前を指定してリロードし、innerHTMLを確認し、目的の情報があればalertで知らせる等でしょうか。
3.
ブラウザなし・APIなしで実現したい場合は、ログインの仕組みを含めて、ブラウザの通信の大部分を模倣したプログラムを自作することになるかと。
1.
まずそのサイトがAPIを公開しているかどうか。公開していれば、(Twitterクライアントを自作するのと同じように、)チェック用のクライアントを自作するのがよいと思います。
※これ以外の方法だと、アクセスのしかたや頻度によっては「不正アクセス」扱いになる可能性があるので注意してください。
言語は、サイトによって、APIと共にメジャーな言語でのサンプルが公開されている場合があるので参考にします。
2.
次に、ブラウザは立ち上げっぱなしだが、ブラウザが背面にあっても「通知」してくれればよい、という場合。
(「ブラウザに表示せずに」とありましたが、一応「背面」ということで。)
この場合は、Javascriptでwindowの名前を指定してリロードし、innerHTMLを確認し、目的の情報があればalertで知らせる等でしょうか。
3.
ブラウザなし・APIなしで実現したい場合は、ログインの仕組みを含めて、ブラウザの通信の大部分を模倣したプログラムを自作することになるかと。
Re: 会員制サイトのページの更新をチェックするような処理をしたいです。
3番目の方法でやりたいと思っております。
おすすめの言語や、それについて解説したサイトなどご存知でしたらご教授いただきたいです。
おすすめの言語や、それについて解説したサイトなどご存知でしたらご教授いただきたいです。
Re: 会員制サイトのページの更新をチェックするような処理をしたいです。
回答ありがとうございます。JSを扱うのは今回が初めてです。
配列を使いURL1,2,3,4と移動としたかったのですが、
ブラウザを使わない部分のみ先に処理されてしまい、変数が反映されません。
URL5,5,5,5と移動してしまいます。
本来なら
1(FOR文の頭のログ)
1(ブラウザでページを読み込んだ直後のログ)
2
2
3
3
4
4
こうしたいのですが
1(FOR文の頭のログ)
2
3
4
5(ブラウザで読み込んだ直後のログ)
5
5
5
このようになってしまいます。
ブラウザの操作も4回実行されているのでFOR文の外にブラウザの操作があるということもないと思います。
その上ページへ移動した後、次のURLで移動するのが速すぎてページが表示されていない状態になってしまいます。
どうすればよいでしょうか。
よろしくお願いいたします。
以下ソースコードです。
var array1 = [];
var fs = require('fs');
var stream = fs.open('51.txt', 'r');
for (var i=1 ; i<=4 ; i++){
array1=stream.readLine();
}
for (var i=1 ; i<=4 ; i++){
var page = require('webpage').create();
console.log(i);//(FOR文の頭のログ)
//ヘッダのセット
page.customHeaders = {
'Connection' : 'keep-alive',
'Accept-Charset' : 'Shift_JIS,utf-8;q=0.7,*;q=0.3',
'Accept-Language' : 'ja,en-US;q=0.8,en;q=0.6',
'Cache-Control' : 'no-cache',
'User-Agent':'Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
};
page.open(array1, function(status) {
console.log(i);//(ブラウザで読み込んだ直後のログ)
if (status === 'success') {
// スクリーンキャプチャ
page.render('google.png')
// ブラウザ内で JS を実行してデータを受け取る
var title = page.evaluate(function() {
var title = document.title;
return title;
});
console.log(title);
}
});
};
配列を使いURL1,2,3,4と移動としたかったのですが、
ブラウザを使わない部分のみ先に処理されてしまい、変数が反映されません。
URL5,5,5,5と移動してしまいます。
本来なら
1(FOR文の頭のログ)
1(ブラウザでページを読み込んだ直後のログ)
2
2
3
3
4
4
こうしたいのですが
1(FOR文の頭のログ)
2
3
4
5(ブラウザで読み込んだ直後のログ)
5
5
5
このようになってしまいます。
ブラウザの操作も4回実行されているのでFOR文の外にブラウザの操作があるということもないと思います。
その上ページへ移動した後、次のURLで移動するのが速すぎてページが表示されていない状態になってしまいます。
どうすればよいでしょうか。
よろしくお願いいたします。
以下ソースコードです。
var array1 = [];
var fs = require('fs');
var stream = fs.open('51.txt', 'r');
for (var i=1 ; i<=4 ; i++){
array1=stream.readLine();
}
for (var i=1 ; i<=4 ; i++){
var page = require('webpage').create();
console.log(i);//(FOR文の頭のログ)
//ヘッダのセット
page.customHeaders = {
'Connection' : 'keep-alive',
'Accept-Charset' : 'Shift_JIS,utf-8;q=0.7,*;q=0.3',
'Accept-Language' : 'ja,en-US;q=0.8,en;q=0.6',
'Cache-Control' : 'no-cache',
'User-Agent':'Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
};
page.open(array1, function(status) {
console.log(i);//(ブラウザで読み込んだ直後のログ)
if (status === 'success') {
// スクリーンキャプチャ
page.render('google.png')
// ブラウザ内で JS を実行してデータを受け取る
var title = page.evaluate(function() {
var title = document.title;
return title;
});
console.log(title);
}
});
};