Google脚本UrlFetchApp.fetch(url).getContentText()返回不完整的HTML

时间:2017-04-29 03:27:34

标签: javascript html google-apps-script google-sheets urlfetch

我使用以下脚本从网页中提取源HTML:

var url = "http://www.asx.com.au/asx/markets/dividends.do?by=asxCodes&asxCodes=BHP";
var xmlFeed = UrlFetchApp.fetch(url).getContentText();

检查xmlFeed文本我发现它与我使用浏览器看到的页面源相比已被截断,而我正在寻找的数据(股息数据表)不存在。事实上,唯一剩下的HTML似乎是在< APM_DO_NOT_TOUCH>内。 标签

我认为这可能是因为股息数据是由脚本生成的,但在我的浏览器中禁用javascript后,我仍然可以看到页面源中的数据(下面的简明版):

<table class="datatable" id="dividends" cellspacing="0">
        <tr>
            <th class="row" scope="row">
            <a onclick="trackAsxCodeClick('BHP')" href="/asx/share-price-research/company/BHP">BHP</a>
            </th>
            <td>BHP BILLITON LIMITED</td>
            <td>
                18.521c
            </td>
            <td>
                01/09/2016
            </td>

我还使用Python中的beautifulsoup库成功地删除了数据,它告诉我数据必须在源HTML中,而不是由脚本生成。

1 个答案:

答案 0 :(得分:0)

如果数据是由脚本生成并提取出来的,您可以尝试使用其他一些 HTML 源代码生成器网站并获取生成的结果

var html = UrlFetchApp.fetch('https://www.joydeepdeb.com/tools/support/print-code.html?v='+your_url_with_script).getContentText();

(此或任何其他源代码提供者服务) 这也将提供由 js 处理的完整源代码。在 Logger.log() 中,它仅限于显示所有结果。因此,将结果发送到邮件使用 GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), "Result", html); 并分析