这是我想抓取的"查看页面源代码"中的 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