1
使用して、Google Appsスクリプト内のテーブルの抽出:私は、次のコードを試してみました NSE私は次のリンクから値をインポートするUrlFetchApp
:
function extract() {
var html = UrlFetchApp.fetch('nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbol=NIFTY').getContentText();
var doc = XmlService.parse(html);
var html = doc.getRootElement();
var menu = getElementsByClassName(html, 'opttbldata')[0];
var output = '';
var linksInMenu = getElementsByTagName(menu, 'th');
for(i in linksInMenu) output+= XmlService.getRawFormat().format(linksInMenu[i])+'<br>';
return HtmlService.createHtmlOutput(output);
//Logger.log(menu);
};
function getElementById(element, idToFind) {
var descendants = element.getDescendants();
for(i in descendants) {
var elt = descendants[i].asElement();
if(elt !=null) {
var id = elt.getAttribute('id');
if(id !=null && id.getValue()== idToFind) return elt;
}
}
};
function getElementsByClassName(element, classToFind) {
var data = [];
var descendants = element.getDescendants();
descendants.push(element);
for(i in descendants) {
var elt = descendants[i].asElement();
if(elt != null) {
var classes = elt.getAttribute('class');
if(classes != null) {
classes = classes.getValue();
if(classes == classToFind) data.push(elt);
else {
classes = classes.split(' ');
for(j in classes) {
if(classes[j] == classToFind) {
data.push(elt);
break;
}
}
}
}
}
}
return data;
};
function getElementsByTagName(element, tagName) {
var data = [];
var descendants = element.getDescendants();
for(i in descendants) {
var elt = descendants[i].asElement();
if(elt !=null && elt.getName()== tagName) data.push(elt);
}
return data;
};
しかし、私は次のエラーを取得していますが:
は、コード403切り捨てサーバーの応答が返されました:アクセスが拒否されました
ありがとうございました!プロキシサーバーを使用して(可能であれば)達成するのを手伝ってもらえますか? – jwilson
私は、アプリケーションスクリプトから使用できる既存のプロキシについて知らず、ユーザーエージェントヘッダーを偽装することを許可します。あなたまたはあなたの会社は自分のサーバーを所有していますか?その場合、プロキシとして動作させることができます。または、nseindiaと同じ情報を提供する別のWebサイトを見つけることもできます。もう1つの解決策は、nseindiaからデータを定期的に取得し、Googleドライブに送信する、PC上で実行されているアプリケーションをどこかに置くことです。 – SpiderPig