【问题标题】:Google script UrlFetchApp.fetch(url).getContentText() returning incomplete HTMLGoogle 脚本 UrlFetchApp.fetch(url).getContentText() 返回不完整的 HTML
【发布时间】:2017-09-27 05:42:51
【问题描述】:

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

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

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

我认为这可能是因为股息数据是由脚本生成的,但在我的浏览器中禁用 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 中,而不是由脚本生成。

【问题讨论】:

  • 尝试设置 xmlFeed.substr(-1000),如相关 SO post 中所述。这是为了检查您是否收到但只看到页面的一部分。希望这会有所帮助。
  • 感谢您的回复,但这不是问题所在。我已将 HTML 导出到文件并确认它超过 1000 个字符 (64945)。

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


【解决方案1】:

如果数据是由脚本生成并提取它,你可以尝试使用其他一些 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(), "结果", html); 并分析

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2017-11-19
    • 2021-09-24
    • 1970-01-01
    • 2017-06-02
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多