抓取网页 html 的一部分并根据条件对其进行测试



这是我想抓取的"查看页面源代码"中的 html 代码的一部分

<span>Loyalty cijena</span>
                                <strong>863,84 KN</strong>

这是我的代码,用于抓取现在为"863"的部分,如果该数字低于 863,则启动我的函数。但是现在无论设置条件如何,函数都会启动 [0-862] 或 [0-864]。我的错误在哪里?

function createBackup() {
        var folder = getFolder(FOLDER_NAME);
        var exportUrl = RESOURCE_URL;
        var response = UrlFetchApp.fetch(exportUrl);
        var htmlBody = response.getContentText();
        var scraped = htmlBody.match(/Loyalty cijena</span>s*<strong>(d+),(d+) KN</strong>/m)[1];
            if(scraped.match(/[0-862]/)); { 
            createBackupFile(folder, FILE_NAME, fetchData());
        }
    }

编辑:这是完整代码

var RESOURCE_URL = 'https://www...',
    BACKUP_FOLDER_ID = 'xxx',
    FOLDER_NAME_FORMAT = 'yyyy-MM-dd',
    FILE_NAME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss",
    FILE_EXT = '.pdf',
    now = new Date(),
    FOLDER_NAME = Utilities.formatDate(now, 'CET', FOLDER_NAME_FORMAT),
    FILE_NAME = Utilities.formatDate(now, 'CET', FILE_NAME_FORMAT) + FILE_EXT;
function createBackup() {
    var folder = getFolder(FOLDER_NAME);
    var exportUrl = RESOURCE_URL;
    var response = UrlFetchApp.fetch(exportUrl);
    var htmlBody = response.getContentText();
  var scraped = htmlBody.match(/Loyalty cijena</span>s*<strong>(d+),(d+) KN</strong>/m)[1];
  console.log(scraped,parseInt(scraped) > 0 &&  parseInt(scraped) < 863); { 
        createBackupFile(folder, FILE_NAME, fetchData());
    }
}
function getFolder(name) {
    var backupFolder = getBackupFolder(),
        folders = backupFolder.getFoldersByName(name);
    if (folders.hasNext()) {
        folder = folders.next();
    } else {
        folder = backupFolder.createFolder(name);
    }
    return folder;
}
function getBackupFolder() {
    return DriveApp.getFolderById(BACKUP_FOLDER_ID);
}
function createBackupFile(folder, filename, data, overwrite) {
    if (overwrite) {
        var existingFiles = folder.getFilesByName(filename);
        while (existingFiles.hasNext()) {
            var file = existingFiles.next();
            folder.removeFile(file);
        }
    }
}
function fetchData() {
    var exportUrl = RESOURCE_URL;
    var response = UrlFetchApp.fetch(exportUrl);
    var htmlBody = response.getContentText();
    var blob = Utilities.newBlob(htmlBody, 'text/html').getAs('application/pdf').setName(FILE_NAME);
    return folder.createFile(blob);
}

模式[0-862]匹配以62结尾的文本,其中第一个符号0 8,例如562但不561。在您的情况下,您应该比较这些字符所表示的数字,而不是与正则表达式进行匹配。

不要使用正则表达式来匹配值:

var htmlBody = `<span>Loyalty cijena</span>
                                    <strong>863,84 KN</strong>`
var scraped = htmlBody.match(/Loyalty cijena</span>s*<strong>(d+),(d+) KN</strong>/m)[1];
console.log(scraped, 
  parseInt(scraped) > 0 &&  parseInt(scraped) <= 863); // false if you change to < 863 

最新更新