初始化项目 创建扩展目录:在Chrome扩展目录下,新建一个目录,命名为myExtension。 创建主文件:在myExtension下,新建manifest.json,这是扩展的配置文件。 编写 manifest.json { "manifest_version": 3, "name": "My Data Grabber", "version": "1.", "description": "A tool to grab data from websites", "icons": { "16": "icon16.png", "48": "icon48.png", "128": "icon128.png" }, "permissions": [ "storage", "contextMenus", "clipboardRead", "scripting" ], "background": { "serviceWorker": "background.js" }, "action": { "default_popup": "options.html", "default_icon": { "16": "icon16.png", "48": "icon48.png", "128": "icon128.png" }...
初始化项目
- 创建扩展目录:在Chrome扩展目录下,新建一个目录,命名为
myExtension。 - 创建主文件:在
myExtension下,新建manifest.json,这是扩展的配置文件。
编写 manifest.json
{
"manifest_version": 3,
"name": "My Data Grabber",
"version": "1.",
"description": "A tool to grab data from websites",
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"permissions": [
"storage",
"contextMenus",
"clipboardRead",
"scripting"
],
"background": {
"serviceWorker": "background.js"
},
"action": {
"default_popup": "options.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}
},
"options_page": "options.html"
}
- 权限设置:选择必要的权限,如
storage、contextMenus、clipboardRead和scripting。 - 背景脚本:指定
background.js文件,用于处理初始化和事件。 - 动作配置:设置工具栏的图标和弹出窗口。
- 选项页面:指定
options.html作为扩展的设置界面。
创建背景脚本 background.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
// 处理来自内容脚本的消息
if (request.action === 'saveData') {
// 存储数据到背景脚本
chrome.storage.local.get(data => {
data[request.site] = request.data;
chrome.storage.local.set(data, result => {
sendResponse({ success: true });
});
});
}
return true;
});
- 监听消息脚本发送消息时,背景脚本会处理存储数据。
- 存储数据:使用
chrome.storage.local保存用户设置和数据。
脚本 content.js
// 当扩展注入到网页时执行
chrome.runtime.sendMessage({
action: 'init'
}, (response) => {
// 初始化时处理
});
// 当用户点击右键菜单时执行
function gotUrl(url) {
chrome.runtime.sendMessage({
action: 'grabData',
url: url
}, (response) => {
// 处理抓取结果
});
}
// 注入到网页
document.addEventListener('DOMContentLoaded', () => {
chrome.runtime.sendMessage({
action: 'inject'
}, (response) => {
// 注入脚本
});
});
- 发送消息脚本发送消息给背景脚本,处理数据存储或显示。
- 注入脚本:在网页的
DOMContentLoaded事件中注入脚本。
创建用户界面
- 工具栏:在
options.html中创建工具栏布局,包含按钮和输入框。 - 弹出窗口:使用
chrome.runtime.openPopup显示弹出窗口,供用户配置设置。
数据存储
- 使用
chrome.storage.local存储用户的偏好设置,如保存路径或其他配置。
测试
- 加载扩展:在Chrome://extensions/页面中加载开发者模式,点击“加载未压缩的扩展”。
- 调试工具:使用Chrome开发者工具,检查扩展是否正常加载,内容脚本是否注入成功。
- 权限检查:确保所有请求的权限在manifest中声明,否则可能会出现错误。
发布
- 检查政策:确保扩展遵守Chrome Web Store政策,避免数据抓取违规。
- 编写文档:提供详细的用户指南,说明如何安装和使用扩展。
- 上传扩展:在Chrome Web Store上发布,填写必要的信息和描述。
通过以上步骤,你可以开发一个功能化的数据抓取工具,帮助用户在浏览网页时方便地提取所需信息。

相关文章








