https://nikkei225jp.com のサイトから日経平均だけを抜き出してGoogle App Script でスクレイピングして
google Spread Sheetに記入するスクリプトを作っています。
https://nikkei225jp.com を見てみると
<div id="V111" class="val2 valN"><p>16,552.83</p></div>
上記の16,552.83が日経平均となるのでそれだけを抜き出したいと思います。
しかしながら、下記のコードGoogle App Script で実行してみると
TypeError: Cannot read property '0' of null
となってしまいます この該当する箇所は 下記のコードの
var extract
これは正規表現に間違いがあるのでしょうか? なぜnullになってしまうのかがわかりません。
ご指摘いただければと思います・
よろしくお願いいたします
function MainFrame() { //ユーザーページにアクセスし、データの取得 var url = "https://nikkei225jp.com"; var request = UrlFetchApp.fetch(url) var content = request.getContentText(); //取得したページから、日経平均を抜き出す var date = new Date(); var values = [getNikkei(content),]; Logger.log(values) //スプレッドシートのid var id= "GoogleスプレッドシートのID" var File = SpreadsheetApp.openById(id); var Sheet = File.getSheets()[1]; Sheet.appendRow(values); } function getNikkei(x){ ** var extract = x.match(/<div id="V111"class="val2 valN"><p>\d{1,10}</p></div>/g) // 日経平均を表示する行を含む行をx.matchで引っ掛けて、 var extract に格納 \d{1,10} は1桁から10桁までの任意の数字を探す正規表現** extract = extract[0].replace(/<div id="V111" class="val2 valN"><p>/,"") // /gは.replaceのオプション,""を指定することでペースをなくすことができる。 .replace(/</p></div>/g,"") //replace の方法は同じ、いらない部分をなくす .replace(/\n/g); // ¥n は改行文字なので改行文字もなくす Logger.log(extract) return extract; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/21 00:58