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

Javascript 使用Google Apps脚本从网页中提取img URL,javascript,google-apps-script,web-scraping,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();

这是一个应用程序脚本,它遍历网页并收集特殊类的某个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提取数据src地址

虽然这有点有效,但我有一个问题:

1) 在9个循环之后,它崩溃了,在appendRow行上,因为最后4个Thumbs元素没有数据src,因此我试图写入电子表格的内容是空的

有什么解决办法吗?目前我只对for循环进行了9次迭代就解决了这个问题,但这远远不是最优的,因为它不是自动化的,需要我遍历页面以使用数据src计算元素

此外,任何关于更优雅解决方案的建议都将不胜感激!我真的很感激你的帮助


干杯

抱歉,不知道,已修复!如果
dataSrc[1]
导致
null
,您可以在使用
append()
方法之前进行条件测试:
If(dataSrc[1]==null){continue}继续循环该值为空。抱歉,不知道,已修复!如果
dataSrc[1]
导致
null
,您可以在使用
append()
方法之前进行条件测试:
If(dataSrc[1]==null){continue}继续循环,如果值为空。