RPA (Web情報回収005_取得したデータの操作)
■取得したソースを加工する
前回websiteのページからソースコードを取得することができたので、今回、そのコードから必要な情報を取り出せないか試してみる。
取得したソースコードの操作はjavascriptでできるはずなので、RPAのアクションのjavascriptを実行が使えそう。少しサンプルを作ってみた。
「JavaScript: 開く」のアクションで実行するスクリプトを選択し、「Javascriptを実行」で実際に動かすよう(下の図)。ここで、スクリプトは手動インポートとして直接javascriptの関数(function createElement)を記入しており、パラメータ(html)として実行時にTemp3を入力している。出力はTemp2に保存。
実行結果は正しく出た。入力したものをそのまま出力しているだけなので、Temp3として入れた<html>~</html>の値がそのまま出力されている。
RPAのアクションでのjavascriptの使い方は分かったので、実際にソースコードを操作するjavascriptを作成してみる。
いろいろとサンプルを見ながら、下のようなjavascriptファイルを作成した(webcoll2.js)。これは、パラメータ(html)に入力した文字列をDOM形式(htmlタグなどで認識される形)に変換し、getElementByIdでcontentsのidを持つ中身を返すもの。
function createElement(html) {
const temp = document.createElement('div');
temp.innerHTML = html;
document.body.appendChild(temp);
var z = document.getElementById('contents').innerHTML;
return z;
}
下のhtmlファイルでwebcoll2.jsを読み込んで関数を実行すると、contentsのidの中身Content partを取り出しているので、javascriptとしてはこれでよさそう。
<!DOCTYPE html>
<html lang="ja">
<head>
</head>
<body>
<script src="webcoll2.js"></script>
<script>
document.write(createElement('<html><body ><p id="contents">Content part</p><ul><li>AAA</li><li>BBB</li><li>CCC</li></ul></body></html>'));
</script>
</body>
</html>
しかし、これをRPAのアクションに記入して実行してみると、bot errorと返ってきた。
const temp = document.createElement('div');の一文だけを上で成功したものに追加して実行してみると同じくbot errorが返ってくる。原因はよく分からないけど、おそらくdocumentのあたりが問題になっているよう。documentはブラウザ上でのみ実行されるとか?
documentは基本的なものだろうから、これが使えないというのも考えにくい気がする。もう少し解決策なり回避策なりないか試しみたい。