使用Google Apps脚本从网页中提取img网址

时间:2016-02-19 22:20:34

标签: javascript google-apps-script web-scraping

这是一个通过网页的应用程序脚本,并收集特殊类的某些div内的img URL。

function getIMGs(url){

var url = 'url'

var  result = UrlFetchApp.fetch(url);

if (result.getResponseCode() == 200) {
  var doc = Xml.parse(result, true);        
  var bodyHtml = doc.html.body.toXmlString();
  var doc = XmlService.parse(bodyHtml);
  var html = doc.getRootElement();
  var thumbs = getElementsByClassName(html, 'thumb');
  var sheet = SpreadsheetApp.getActiveSheet();

  for (i in Thumbs) {
    var output = '';
    var linksInMenu = getElementsByTagName(thumbs[i], 'img');

    for(i in linksInMenu) {
      output += XmlService.getRawFormat().format(linksInMenu[i]);
    }

    var linkRegExp = /data-src="(.*?)"/;
    var dataSrc = linkRegExp.exec(output);
    sheet.appendRow([dataSrc[1]]);
    }
}

首先代码获取html,并使用辅助函数来获取某些元素,如下所示:

<div class="thumb"><div class="loader"><span class="icon-uniE611"></span></div><img src="//xxx" data-src="https://xxx/8491a83b1cacc2401907997b5b93e433c03c91f.JPG" data-target="#image-slider" data-slide-to="0"></div>

然后代码获取img元素,最后通过RegExp提取data-src地址。

虽然有点工作,但我遇到了问题:

1)在9次循环后,它崩溃,在appendRow行上 ,因为最后4个Thumbs元素没有data-src,因此我试图写入电子表格为空。

任何解决方案?我暂时只通过For循环进行了9次迭代来修复它,但这远非最优,因为它不是自动化的,并且需要我通过页面来计算data-src的元素。

此外,任何建议更优雅的解决方案将不胜感激!我会非常感激任何帮助!

干杯

0 个答案:

没有答案