这是一个通过网页的应用程序脚本,并收集特殊类的某些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的元素。
此外,任何建议更优雅的解决方案将不胜感激!我会非常感激任何帮助!
干杯