前提・実現したいこと
Lineでのbotを作成したいです。
基本的な部分は作成できたのですが、Webスクレイピングがうまくいきません。
下記のソースですと、
待ち時間
と入力すると、
表示します
と帰ってきますが、
表示します ではなく、https://example.comのソースコード(191行目~535行目)を表示させたいです。
下記ソースを少し編集しました。
発生している問題
webスクレイピングができない
ソース
JavaScript
1 2function doPost(e) { 3 var replyToken= JSON.parse(e.postData.contents).events[0].replyToken; 4 if (typeof replyToken === 'undefined') { 5 return; 6 } 7 8 var url = 'https://api.line.me/v2/bot/message/reply'; 9 var channelToken = 'ここにアクセストークン(ロングターム)を貼り付け'; 10 11 var input = JSON.parse(e.postData.contents).events[0].message; 12 13 var message = 'こんにちは'; 14 var options = { 15 method : "GET" 16}; 17 18//アクセス先URLにGETリクエストを送信し、レスポンスを取得 19var response = UrlFetchApp.fetch("http://cfabond2020.php.xdomain.jp/ma.php",options); 20 21//レスポンスからページソース(内容)を取得 22var content = response.getContentText("UTF-8"); 23 24var regex = /<div>(.*)</div>/g; 25 26var match; 27var ct = 0; 28var data = []; 29 30while((match = regex.exec(content)) !== null){ 31 Logger.log(match); 32 data[ct] = match[1]; 33 ct++; 34} 35var plain = content.replace(/</?[^>]+>/ig, ""); 36 37var message1 = encodeURIComponent(data); 38 39 40 41 if(input.type == 'text') { 42 if(input.text.match('待ち時間')) { 43 message = message1; 44 } 45 } 46 47 var messages = [{ 48 'type': 'text', 49 'text': message, 50 }]; 51 52 UrlFetchApp.fetch(url, { 53 'headers': { 54 'Content-Type': 'application/json; charset=UTF-8', 55 'Authorization': 'Bearer ' + channelToken, 56 }, 57 'method': 'post', 58 'payload': JSON.stringify({ 59 'replyToken': replyToken, 60 'messages': messages, 61 }), 62 }); 63 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 64} 65
試したこと
色々と調べたのですが、webスクレイピングの方法を書いているサイトがありませんでした。一つだけ見つけたのですが、(https://for-ne.info/gas)少しやりたいことが違って、、でもソースは使えると思います。
補足情報(FW/ツールのバージョンなど)
Google apps script を使用しています。
回答1件
あなたの回答
tips
プレビュー