初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2020-04-07 06:35:59

nicknick
Guest

JavaSqriptで表示しているWebサイトをサーバで収集したい

こちらでWebビューアを使った方法は拝見させて頂きました。
定期的に収集したいのでサーバで処理を行いたいのですが
何か方法はありますでしょうか?

#2 2020-04-07 07:12:48

himaganee
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

スクリプトスケジュールを使えばいいのでは?「方法」がユーザ操作を使うのだったら無理ですが。

#3 2020-04-07 08:53:52

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

こちらでWebビューアを使った方法は確認しました。

[解決] WEBビューアに取り込んだウェブページを全コピー
https://fm-aid.com/bbs2/viewtopic.php?pid=48094#p48094

サーバですとWebビューアが使えませんよね?
他に何か方法がないかなと思いました。
宜しくお願いします!

#4 2020-04-07 10:12:36

qb_dp
Member

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

Headless Chrome を使うとコマンドラインでレンダリング後のHTMLソースを取得することができます。

参考:
WEBビューアに取り込んだウェブページを全コピー
https://fm-aid.com/bbs2/viewtopic.php?pid=48287#p48287


コマンドを実行し、戻り値が取得できるプラグイン等であれば、上記記載の「ProcessMakerTL」でなくてもソースを取得することができます。

ScriptMakerPSでの例:

変数を設定 [ $Script; 値:"[Console]::OutputEncoding =[System.Text.Encoding]::UTF8; cmd /c \"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe\" --enable-logging --headless --disable-gpu --dump-dom https://fm-aid.com/bbs2/viewforum.php?id=2 ;" ]
フィールド設定 [ web::f1; SMPS_Exe( $Script ) ]

ScriptMakerPS | FileMaker Plugin for Windows
https://sites.google.com/site/scriptmakerps/


FileMaker Serverのスクリプトスケジュールを使用すれば、プラグインなしでも出来なくは無いと思いますが、色々面倒でしょう...

Offline

#5 2020-04-07 15:31:00

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

qb_dpさん
ありがとうございます!
さっそく試したいのですが 変数を設定 にそのままコピペすると
「ダブルクォーテーションマークで終わらなければなりません」となります。
最後が「--enable-lo」で終わっているのですが続きがあるのでしょうか?

FileMaker Serverのスクリプトスケジュールを使えば出来るのですか・・・?
スクリプトスケジュールはスクリプトをスケジュール通りに実行するだけと思っていたのですが
私にはまだ理解が出来ていないようです^^;

#6 2020-04-07 16:31:28

qb_dp
Member

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

「ScriptMakerPSでの例:」を試しているのでしょうか?

[ code ]タグで記述したので隠れてしまっていました。

変数を設定 [ $Script; 値:"[Console]::OutputEncoding =[System.Text.Encoding]::UTF8; cmd /c \"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe\" --enable-logging --headless --disable-gpu --dump-dom https://fm-aid.com/bbs2/viewforum.php?id=2 ;" ]
フィールド設定 [ web::f1; SMPS_Exe( $Script ) ]

FileMaker Serverのスクリプトスケジュールを使えば出来るのですか・・・?
スクリプトスケジュールはスクリプトをスケジュール通りに実行するだけと思っていたのですが

FileMaker Serverのスクリプトスケジュールの「システムスクリプト」や「スクリプトシーケンス」を組み合わせる必要があるでしょう。たぶん...。

Offline

#7 2020-04-09 13:45:36

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

qb_dpさん
ありがとうございます!
コピペをして実行したのですが
? が返ってきます。
プラグインもチェックが入っており使えるはずなのですが
なぜでしょうか・・・?

#8 2020-04-09 15:50:42

qb_dp
Member

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

PowerShellを起動し、以下のスクリプトを実行してみてください。
※chrome.exeのパスは、環境により異なる場合があります。

[Console]::OutputEncoding =[System.Text.Encoding]::UTF8; cmd /c "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-logging --headless --disable-gpu --dump-dom https://fm-aid.com/bbs2/viewforum.php?id=2 ;


FileMakerで以下のスクリプトを実行してみてください。
フィールド設定 [ web::f1; SMPS_Exe( "$PSVersionTable.PSVersion" ) ]
プラグインが正常に動作している場合は、以下のようなPowerShellのバージョンが返されます。
5.1.18362.628

Offline

#9 2020-07-09 17:25:48

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

以前はアドバイスを頂きありがとうございました!
おかげさまで問題なく収集ができました。

また1つ問題がありましたので教えてください!>_<;
こちらを収集したいのですが1ページ目は問題なく出来ます。
https://category.vip.com/suggest.php?ke … 3%E8%A3%99

2ページ目以降を収集するのに、下記のように指定すると取得が出来ませんでした。
https://category.vip.com/suggest.php?ke … %99&page=2

何か方法はありませんでしょうか?
宜しくお願い致します。

#10 2020-07-09 18:44:47

qb_dp
Member

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

URLの部分を ’ シングルクォートで包みましょう。

'https://category.vip.com/suggest.php?ke … %99&page=2'

Offline

#11 2020-07-10 08:52:07

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

おお~!
出来ました!!
ありがとうございます^^
出来ないと思っていたのでとても助かりました^_^v

#12 2021-02-04 22:19:00

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

またまたお知恵を貸して下さい^^;
Instagramを収集したいのですが、初めは問題なくソースを取得出来ていましたが
途中から急にフィード投稿のページを取得しようとすると「ページが見つかりません」となります。
プロフィールの所は収集出来ます。
chomeで開くとプロフィール・フィードどちらも問題なく表示していました。
IEで開くとどちらも「ページが見つかりません」となります。
フィードを取得できる方法はありませんでしょうか?
またプロフィールは下にスクロールしないと
次の投稿を表示したい為に12投稿までしか取得出来ませんでした。
下にスクロールして取得する方法はありますでしょうか?

宜しくお願い致します>_<

#13 2021-02-07 01:42:19

qb_dp
Member

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

以下が参考になるのでは。
https://self-development.info/%E3%82%B9 … %E3%80%91/

スクロールしてスクレイピングとなるとchromeのコマンドラインだけでは無理です。
ブラウザを制御してスクレイピングする必要があります。

FileMakerでブラウザを制御するには、外部プログラムとの連携が必要です。
参考:
FileMakerでGoogle Chrome を操作。Node.js ? puppeteer_lib
https://qbxxdp.blogspot.com/2020/09/fil … odejs.html

FileMaker + Google ChromeでWEBスクレイピング!
https://sites.google.com/site/scriptmak … b-scraping

Offline

#14 2021-02-07 08:22:04

himadanee
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

InstagramならAPIもあるのでは?

#15 2021-02-09 00:33:12

nicknick
Guest

Re: JavaSqriptで表示しているWebサイトをサーバで収集したい

ご回答ありがとうございます!
あれから色々試したところ2日後に以前と同じように取得が出来ました。
ですが30分程度でまた同じ状況になりました。
去年から「ブラウザを経由(操作)しないとスクレイピングできなくなった」のが影響しているようです。

教えて頂いた方法であれば出来るのですね!
ですが私にはまだ難しそうです・・
最悪スクロールなしでもいいのでソースを取得できたら大変助かるのですが>_<;
chromeのデベロッパーツールのElementsをコピーしたらソースを取得できるので
RPAで取得しようと調べましたがどれも高いですね^^;

InstagramのAPIは確か他のユーザ情報やいいね数などが取得出来なかった気がします。

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 550.67 KiB (Peak: 571.58 KiB) ]