本文介绍了如何使用油猴(Tampermonkey)脚本进行网页数据抓取和处理。油猴是一个用户脚本管理器,允许用户在浏览器上运行自定义脚本,以增强网页功能。本文重点讲解了通过油猴脚本添加数据导出到Excel的功能,涉及Jquery和JavaScript爬虫技术。文中提供了HTML、CSS和JavaScript的完整代码示例,帮助学习者深入理解并掌握这些技术。通过这些代码,用户可以一键复制并查看实际效果,实现网页数据的快速导出和处理。
油猴脚本, 数据抓取, Excel导出, Jquery, JavaScript
用户脚本管理器是一种浏览器扩展工具,它允许用户在网页上运行自定义的JavaScript脚本,以增强或修改网页的功能。这些脚本通常被称为“用户脚本”或“油猴脚本”。用户脚本管理器最著名的代表之一就是油猴(Tampermonkey),它支持多种主流浏览器,如Chrome、Firefox、Safari等。
用户脚本管理器的核心功能在于其能够为用户提供一个平台,使他们能够轻松地编写、管理和运行自定义脚本。这些脚本可以在特定的网页上自动执行,从而实现自动化任务、数据抓取、页面美化等多种功能。例如,用户可以通过编写脚本来自动填写表单、提取网页上的特定数据、甚至修改网页的布局和样式。
油猴脚本在网页数据抓取中的应用非常广泛,尤其是在需要频繁从网页中提取数据的场景下。通过编写油猴脚本,用户可以实现自动化数据抓取,大大提高了工作效率。以下是一些具体的例子:
假设你需要从一个电商网站上提取商品信息,包括名称、价格、评价等。手动提取这些信息不仅耗时,而且容易出错。通过编写油猴脚本,你可以自动化这一过程。脚本可以自动遍历网页上的商品列表,提取所需的数据,并将其存储在一个结构化的文件中,如CSV或Excel。
在许多应用场景中,将抓取到的数据导出到Excel是非常实用的。Excel不仅便于数据的查看和分析,还可以与其他数据分析工具无缝集成。通过结合Jquery和JavaScript,油猴脚本可以轻松实现这一功能。以下是一个简单的示例代码,展示了如何将网页上的表格数据导出到Excel:
// ==UserScript==
// @name 导出数据到Excel
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 将网页表格数据导出到Excel
// @author 张晓
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 获取表格数据
function getTableData() {
let table = document.querySelector('table');
let rows = table.querySelectorAll('tr');
let data = [];
rows.forEach(row => {
let cells = row.querySelectorAll('td');
let rowData = [];
cells.forEach(cell => {
rowData.push(cell.innerText);
});
data.push(rowData);
});
return data;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'data.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出到Excel';
button.onclick = () => {
let data = getTableData();
exportToExcel(data);
};
document.body.appendChild(button);
})();
这段代码首先定义了一个 getTableData
函数,用于获取网页表格中的数据。然后,定义了一个 exportToExcel
函数,用于将数据导出到Excel文件。最后,通过在页面上添加一个按钮,用户可以点击该按钮触发导出操作。
通过这种方式,用户不仅可以高效地抓取网页数据,还可以方便地将其导出到Excel,进一步进行数据分析和处理。这不仅节省了大量时间和精力,还提高了数据处理的准确性和可靠性。
在开始使用油猴脚本进行网页数据抓取和处理之前,首先需要安装并配置油猴脚本管理器。油猴脚本管理器是一款强大的工具,可以帮助用户在浏览器上运行自定义脚本,从而实现各种自动化任务。以下是详细的安装与配置步骤:
通过以上步骤,您可以成功安装并配置油猴脚本管理器,为后续的数据抓取和处理做好准备。
在编写油猴脚本进行网页数据抓取和处理时,了解HTML、CSS和JavaScript的基本知识是非常重要的。这些技术是现代网页开发的基础,掌握它们可以帮助您更高效地编写和调试脚本。
<div>
、<p>
、<table>
、<img>
等。了解这些标签的用途和属性,有助于您更好地解析和操作网页内容。color
、font-size
、margin
、background-color
等。掌握CSS可以帮助您美化网页,使其更具吸引力。querySelector
、forEach
、addEventListener
等。了解这些方法的使用,有助于您编写高效的脚本。通过学习和实践HTML、CSS和JavaScript,您可以更好地理解和操作网页内容,为编写油猴脚本打下坚实的基础。
在编写油猴脚本进行数据抓取和处理时,使用Jquery库和JavaScript爬虫技术可以大大提高开发效率和代码可读性。以下是如何准备和使用这些技术的详细步骤:
// ==UserScript==
// @name 示例脚本
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 使用Jquery进行数据抓取
// @author 张晓
// @match *://*/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 使用Jquery选择器获取表格数据
function getTableData() {
let data = [];
$('table tr').each(function() {
let rowData = [];
$(this).find('td').each(function() {
rowData.push($(this).text());
});
data.push(rowData);
});
return data;
}
// 测试获取数据
console.log(getTableData());
})(jQuery);
// ==UserScript==
// @name 抓取商品信息
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站抓取商品信息
// @author 张晓
// @match *://example.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push({ name, price, rating });
});
return products;
}
// 测试获取商品信息
console.log(getProductInfo());
})();
通过引入Jquery库和使用JavaScript爬虫技术,您可以更高效地编写油猴脚本,实现网页数据的快速抓取和处理。这些技术不仅简化了代码,还提高了开发效率,使您的脚本更加健壮和可靠。
在使用油猴脚本进行网页数据抓取之前,选择合适的目标网页和数据是至关重要的一步。目标网页的选择不仅要考虑数据的丰富性和可用性,还要确保网页结构相对稳定,以便于脚本的编写和维护。以下是一些选择目标网页和数据的建议:
<div class="product-item">
标签内,而具体的数据项则分布在 <span class="product-name">
、<span class="product-price">
和 <span class="product-rating">
等标签中。编写数据抓取脚本是实现网页数据抓取的关键步骤。通过编写高效的脚本,可以自动化地提取所需数据,并将其处理成所需的格式。以下是一个完整的示例脚本,展示了如何从电商网站抓取商品信息并导出到Excel:
// ==UserScript==
// @name 抓取商品信息并导出到Excel
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站抓取商品信息并导出到Excel
// @author 张晓
// @match *://example.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'products.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出商品信息到Excel';
button.onclick = () => {
let data = getProductInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
这段脚本首先定义了一个 getProductInfo
函数,用于从网页上提取商品信息。然后,定义了一个 exportToExcel
函数,用于将提取到的数据导出到Excel文件。最后,通过在页面上添加一个按钮,用户可以点击该按钮触发导出操作。
在实际应用中,很多网页采用动态加载的方式显示数据,这给数据抓取带来了挑战。动态加载的数据通常由JavaScript生成,而不是直接嵌入在HTML中。因此,传统的DOM操作方法可能无法直接获取到这些数据。以下是一些处理动态网页数据抓取问题的方法:
setTimeout
或 setInterval
方法,等待数据完全加载后再进行抓取。例如,可以设置一个定时器,在页面加载完成后等待几秒钟,确保数据已经加载完毕。setTimeout(() => {
let data = getProductInfo();
exportToExcel(data);
}, 5000); // 等待5秒
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes.length > 0) {
let data = getProductInfo();
exportToExcel(data);
observer.disconnect(); // 停止监听
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
通过以上方法,可以有效地处理动态网页数据抓取问题,确保数据的完整性和准确性。这些技巧不仅提高了数据抓取的效率,还增强了脚本的鲁棒性,使其能够在各种复杂的网页环境中稳定运行。
在编写油猴脚本的过程中,将数据导出到Excel是一个非常实用的功能。通过集成Excel导出功能,用户可以方便地将抓取到的数据保存为结构化的文件,便于进一步分析和处理。以下是如何将Excel导出功能集成到油猴脚本中的详细步骤:
XLSX
。这个库提供了丰富的API,可以轻松地将数据转换为Excel文件。// ==UserScript==
// @name 抓取商品信息并导出到Excel
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站抓取商品信息并导出到Excel
// @author 张晓
// @match *://example.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js
// @grant none
// ==/UserScript==
exportToExcel
,用于将数据导出到Excel文件。这个函数会使用 XLSX
库将数据转换为Excel格式,并生成文件。(function($) {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'products.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出商品信息到Excel';
button.onclick = () => {
let data = getProductInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
通过以上步骤,您可以将Excel导出功能集成到油猴脚本中,实现数据的快速导出和处理。
在实现Excel导出功能时,Jquery和JavaScript的结合使用可以大大提高开发效率和代码的可读性。以下是如何使用Jquery和JavaScript实现数据抓取和导出的具体步骤:
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
XLSX
库,可以将提取到的数据转换为Excel文件。以下是一个示例代码,展示了如何使用 XLSX
库生成Excel文件。function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'products.xlsx');
}
let button = document.createElement('button');
button.innerText = '导出商品信息到Excel';
button.onclick = () => {
let data = getProductInfo();
exportToExcel(data);
};
document.body.appendChild(button);
通过以上步骤,您可以使用Jquery和JavaScript实现数据抓取和导出功能,使油猴脚本更加高效和易用。
在完成脚本编写后,测试和优化导出效果是确保脚本稳定运行的重要步骤。以下是一些测试和优化的方法:
// 手动测试
let data = getProductInfo();
exportToExcel(data);
function exportToExcel(data) {
try {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'products.xlsx');
} catch (error) {
console.error('导出失败:', error);
}
}
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
通过以上测试和优化步骤,您可以确保油猴脚本在各种场景下都能稳定运行,为用户提供高效的数据抓取和导出体验。
在当今信息爆炸的时代,新闻网站成为了人们获取最新资讯的主要渠道。然而,面对海量的信息,如何高效地抓取和整理这些数据,成为了许多研究者和数据分析师面临的一大挑战。通过使用油猴脚本,我们可以轻松实现新闻网站的数据抓取,并将其导出到Excel,以便进一步分析和处理。
首先,我们需要选择一个目标新闻网站。假设我们选择了某知名新闻网站,该网站每天发布大量的新闻文章,涵盖了政治、经济、科技等多个领域。我们的目标是从该网站上抓取最新的新闻标题、发布时间和摘要信息。
使用浏览器的开发者工具,我们可以分析目标新闻网站的HTML结构。假设新闻标题位于 <h2 class="news-title">
标签内,发布时间位于 <span class="publish-time">
标签内,摘要信息位于 <p class="news-summary">
标签内。了解这些标签的结构,有助于我们编写更精准的抓取脚本。
接下来,我们编写一个油猴脚本来抓取新闻网站的数据。以下是完整的脚本示例:
// ==UserScript==
// @name 新闻网站数据抓取与导出
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从新闻网站抓取新闻标题、发布时间和摘要信息,并导出到Excel
// @author 张晓
// @match *://example-news.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取新闻信息
function getNewsInfo() {
let newsItems = [];
$('.news-item').each(function() {
let title = $(this).find('.news-title').text();
let publishTime = $(this).find('.publish-time').text();
let summary = $(this).find('.news-summary').text();
newsItems.push([title, publishTime, summary]);
});
return newsItems;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'news_data.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出新闻数据到Excel';
button.onclick = () => {
let data = getNewsInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
这段脚本首先定义了一个 getNewsInfo
函数,用于从网页上提取新闻标题、发布时间和摘要信息。然后,定义了一个 exportToExcel
函数,用于将提取到的数据导出到Excel文件。最后,通过在页面上添加一个按钮,用户可以点击该按钮触发导出操作。
在完成脚本编写后,我们需要进行测试和优化。手动测试脚本的各项功能,确保数据抓取和导出功能正常工作。同时,处理可能出现的异常情况,如网络延迟、数据缺失等。通过不断改进和优化,使脚本更加稳定和高效。
电商网站是现代购物的重要平台,每天有成千上万的商品信息更新。对于商家和消费者来说,及时获取这些信息具有重要意义。通过使用油猴脚本,我们可以自动化地抓取电商网站的商品信息,并将其导出到Excel,以便进一步分析和处理。
假设我们选择了某知名电商网站,该网站上有大量的商品信息,包括商品名称、价格、评价等。我们的目标是从该网站上抓取这些信息,并将其导出到Excel。
使用浏览器的开发者工具,我们可以分析目标电商网站的HTML结构。假设商品名称位于 <h2 class="product-name">
标签内,价格位于 <span class="product-price">
标签内,评价信息位于 <span class="product-rating">
标签内。了解这些标签的结构,有助于我们编写更精准的抓取脚本。
接下来,我们编写一个油猴脚本来抓取电商网站的商品信息。以下是完整的脚本示例:
// ==UserScript==
// @name 电商网站商品信息抓取与导出
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站抓取商品名称、价格和评价信息,并导出到Excel
// @author 张晓
// @match *://example-ecommerce.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'product_data.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出商品信息到Excel';
button.onclick = () => {
let data = getProductInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
这段脚本首先定义了一个 getProductInfo
函数,用于从网页上提取商品名称、价格和评价信息。然后,定义了一个 exportToExcel
函数,用于将提取到的数据导出到Excel文件。最后,通过在页面上添加一个按钮,用户可以点击该按钮触发导出操作。
在完成脚本编写后,我们需要进行测试和优化。手动测试脚本的各项功能,确保数据抓取和导出功能正常工作。同时,处理可能出现的异常情况,如网络延迟、数据缺失等。通过不断改进和优化,使脚本更加稳定和高效。
通过这两个案例,我们可以看到油猴脚本在数据抓取和处理方面的强大功能。无论是新闻网站还是电商网站,通过编写合适的脚本,都可以实现高效的数据抓取和导出,为数据分析和决策提供有力支持。希望这些示例能为读者提供有益的参考和启发。
在数据抓取的过程中,经常会遇到一些复杂的数据格式,如日期、电话号码、电子邮件地址等。这些数据往往需要进行进一步的处理和清洗,才能满足实际应用的需求。正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,可以用来匹配、查找、替换和验证字符串。通过在油猴脚本中使用正则表达式,可以高效地处理这些复杂数据,提高数据抓取的准确性和可靠性。
正则表达式在数据抓取中的应用非常广泛,以下是一些常见的应用场景:
YYYY-MM-DD
,有的是 MM/DD/YYYY
。通过正则表达式,可以将这些不同格式的日期统一转换为一种标准格式。function formatDate(dateString) {
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const match = dateString.match(regex);
if (match) {
return `${match[1]}-${match[2]}-${match[3]}`;
}
return dateString;
}
+86-12345678901
或 010-12345678
。function extractPhoneNumber(text) {
const regex = /\+?\d{1,4}-\d{7,10}/;
const match = text.match(regex);
return match ? match[0] : null;
}
function validateEmail(email) {
const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return regex.test(email);
}
假设我们需要从一个招聘网站上抓取职位信息,其中包括职位名称、公司名称、薪资范围和联系方式。其中,联系方式可能包含电话号码和电子邮件地址。通过正则表达式,可以高效地提取和验证这些信息。
// ==UserScript==
// @name 招聘网站数据抓取与处理
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从招聘网站抓取职位信息,并利用正则表达式处理复杂数据
// @author 张晓
// @match *://example-job.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取职位信息
function getJobInfo() {
let jobs = [];
$('.job-item').each(function() {
let title = $(this).find('.job-title').text();
let company = $(this).find('.company-name').text();
let salary = $(this).find('.salary-range').text();
let contact = $(this).find('.contact-info').text();
// 提取电话号码
let phoneNumber = extractPhoneNumber(contact);
// 提取电子邮件地址
let email = contact.match(/[\w.-]+@[\w.-]+\.\w+/)[0];
// 验证电子邮件地址
if (validateEmail(email)) {
jobs.push({ title, company, salary, phoneNumber, email });
}
});
return jobs;
}
// 提取电话号码
function extractPhoneNumber(text) {
const regex = /\+?\d{1,4}-\d{7,10}/;
const match = text.match(regex);
return match ? match[0] : null;
}
// 验证电子邮件地址
function validateEmail(email) {
const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return regex.test(email);
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.json_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'job_data.xlsx');
}
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '导出职位信息到Excel';
button.onclick = () => {
let data = getJobInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
通过以上示例,我们可以看到正则表达式在处理复杂数据中的强大作用。无论是日期格式化、电话号码提取还是电子邮件地址验证,正则表达式都能提供简洁而高效的解决方案,使数据抓取更加准确和可靠。
在实际应用中,数据抓取往往需要定期执行,以保持数据的时效性和准确性。通过设置定时任务,可以实现数据抓取的自动化,减轻人工干预的负担。油猴脚本结合定时任务设置,可以实现高效的数据抓取和处理。
在油猴脚本中,可以使用 setInterval
方法来设置定时任务。通过 setInterval
,可以每隔一定的时间间隔自动执行指定的函数。以下是一个简单的示例,展示了如何设置定时任务来定期抓取数据。
// ==UserScript==
// @name 定期抓取数据
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站定期抓取商品信息
// @author 张晓
// @match *://example-ecommerce.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each(function() {
let name = $(this).find('.product-name').text();
let price = $(this).find('.product-price').text();
let rating = $(this).find('.product-rating').text();
products.push([name, price, rating]);
});
return products;
}
// 生成Excel文件
function exportToExcel(data) {
let worksheet = XLSX.utils.aoa_to_sheet(data);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'product_data.xlsx');
}
// 设置定时任务
setInterval(() => {
let data = getProductInfo();
exportToExcel(data);
console.log('数据已导出到Excel');
}, 60000); // 每分钟执行一次
// 添加导出按钮
let button = document.createElement('button');
button.innerText = '立即导出商品信息到Excel';
button.onclick = () => {
let data = getProductInfo();
exportToExcel(data);
};
document.body.appendChild(button);
})(jQuery);
在这个示例中,setInterval
方法每分钟执行一次 getProductInfo
和 exportToExcel
函数,实现了数据的定期抓取和导出。通过这种方式,可以确保数据的及时更新,满足实际应用的需求。
在处理动态加载数据时,定时任务的设置需要特别注意。动态加载的数据通常由JavaScript生成,而不是直接嵌入在HTML中。为了确保数据的完整性和准确性,可以结合 MutationObserver
来监听DOM的变化,确保数据加载完成后再进行抓取。
// ==UserScript==
// @name 动态加载数据的定期抓取
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 从电商网站定期抓取动态加载的商品信息
// @author 张晓
// @match *://example-ecommerce.com/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
// 获取商品信息
function getProductInfo() {
let products = [];
$('.product-item').each
{"error":{"code":"invalid_parameter_error","param":null,"message":"Single round file-content exceeds token limit, please use fileid to supply lengthy input.","type":"invalid_request_error"},"id":"chatcmpl-f5780847-4600-9fdb-86cc-c98443406d25"}