chrome开发总结(交互/权限/存储)-爬虫
来源:互联网 发布:数控编程的基本步骤 编辑:程序博客网 时间:2024/06/05 21:13
chrome开发总结(交互/权限/存储)-爬虫
- chrome开发总结交互权限存储-爬虫
- chrome-配置文件
- chrome-js简介
- chrome-交互
标签(空格分隔): 杂乱之地
经过一翻折腾。还是选择了chrome来做爬虫。主要是为了解决一些ajax加载的问题以及代理的问题。
1.chrome-配置文件
manifest.json
{ // 必选 "manifest_version": 2, "name": "我的应用", "version": "版本字符串", // 推荐 "default_locale": "en", "description": "纯文本描述", "icons": {...}, // 选择某一个(或者无) "browser_action": {...}, "page_action": {...}, // 可选 "author": ..., "automation": ..., "background": { // 推荐 "persistent": false }, "background_page": ..., "commands": ..., "content_scripts": [{...}], "content_security_policy": "策略字符串", "converted_from_user_script": ..., "current_locale": ..., "externally_connectable": { "matches": ["*://*.example.com/*"] }, "homepage_url": "http://path/to/homepage", "import": ..., "incognito": "spanning 或 split", "key": "公钥", "minimum_chrome_version": "版本字符串", "offline_enabled": true, "optional_permissions": ..., "options_page": "aFile.html", "page_actions": ..., "permissions": [...], "plugins": [...], "requirements": {...}, "script_badge": ..., "short_name": "短名称", "signature": ..., "spellcheck": ..., "storage": { "managed_schema": "schema.json" }, "tts_engine": ..., "update_url": "http://path/to/updateInfo.xml", "web_accessible_resources": [...]}
上面这些不是必须的。把自己需要的加上就可以了。基本上后面的都是不需要的。下面贴一个我的项目的配置
{ "name": "siteSpider", "manifest_version": 2, "version": "0.0.2", "description": "相对单线程稳定版", "browser_action": { "default_icon": "spider.png", "default_title": "spider", "default_popup": "popup.html" }, "permissions": [ "activeTab", "webRequest", "webNavigation", "webRequestBlocking", "proxy", "*://*/*", "tabs", "storage", "unlimitedStorage" ], "background": { "scripts": ["js/jquery-1.11.2.min.js", "js/bk.js"] }, "content_scripts": [ { "matches": [ "*://*/*" ], "js": [ "js/jquery-1.11.2.min.js", "js/content.js" ] } ]}
2. chrome-js简介
chrome一般情况下是3个js。这3个js分别是popup.js/background.js/content.js
这三个js的名字分别代表他们的位置及作用的地点。
popup.js是弹出的那个页面用的js。假如在弹出的页面引用了document.getElement.ById().则 他获取的是popup.html页面的内容。而不是当前页的。popup.js所作用的范围就是popup.
background.js:顾名思义,他是一个后台的js,在任何页面都可以调用。他主要的作用就是调度及与我们的后台发送ajax请求等。通过bk.js给popup/content来发送信息。操作tab以及做一些监听等操作。
- content.js:是页面中的js,也就是tab中的js。在background.js可以通过
chrome.tabs.query(active:true,currentWindow:true,function(tabs){ //发送一些操作指令})
来发送一些指令进行操作。并且只能使用chrome.extension.*的api.
3. chrome-交互
chrome插件交互一般是3种js之间的交互。
下面演示一下popup.js跟background.js的交互。
这是一个popup.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script> <script type="text/javascript" src="js/popup.js"></script></head><body><div> <!-- <div> sku编码:<input type="text" id="sku"/> </div> --> <div> 抓取规则:<select id="rule"> <option value="tb">淘宝</option> </select> </div> <div> 抓取页数:<input type="text" id="fetchNum" value="1"/> </div> <button id="startFetch">抓取</button> <button id="hasLoginOk">已登录</button></div><div>使用说明:1.在淘宝搜索好关键词(可选择排序或其他淘宝功能)后,点击抓取。2.如果出现登录验证,请登录后点击已登录,然后刷新当前网页。3.插件正常运行中, 禁止使用该浏览器浏览其他网页。</div><!-- <div id="html"> 抓取总数:<span id="fetchTotals"></span></div>--></body> </html>
下面是popup.js
$(function() {//绑定按钮 $("#startFetch").bind("click", startFetch); $("#hasLoginOk").bind("click",hasLoginOk);})function hasLoginOk() { chrome.runtime.sendMessage({ type: "mustLoginIsOk" }, function(response) { });}function startFetch() { var rule = $("#rule").val(); var num = $("#fetchNum").val(); var sku = $("#sku").val(); var baseUrl = $("#baseUrl").val(); chrome.runtime.sendMessage({//发送消息 type: "fetchUrls", sku: sku, rule: rule, num: num, baseUrl: baseUrl }, function(response) { $("#fetchTotal").html(response); });}/* chrome.extension.onMessage.addListener(function(request,_,response){ if(request.totals){ $("#fetchTotal").html("z"); $("#fetchTotal").html(request.totals); }}) */
可以看到popup.js通过chrome.runtime.sendMessage()
来发送消息。
在backgroundjs通过chrome.extension.onMessage.addListener()
来放置一个监听器。监听所有的请求。
总结 chrome-js之间的通信都是通过chrome-api的chrome.tabs.sendMessage,chrome.runtime.sendMessage,chrome.extension.onMessage.addListener()来进行的。
api地址:http://chajian.baidu.com/developer/extensions/api_index.html
下面是代码地址
https://github.com/wongloong/chromeSpider
- chrome开发总结(交互/权限/存储)-爬虫
- Chrome插件开发 – 浏览器交互
- 【嵌入式开发】SIP信令交互总结(1)
- 存储引擎开发总结
- Chrome扩展及应用开发 入门笔记(三)存储数据
- 系统开发权限总结篇
- 角色-权限-用户开发总结
- 爬虫分析与chrome
- 爬虫学习-selenium+chrome
- Android学习WebView交互开发总结
- iOS 与 JS 交互开发知识总结
- iOS 与 JS 交互开发知识总结
- 学习web开发的一点个人总结(关于权限)
- python爬虫-->表单交互
- 手把手教你Chrome扩展开发:本地存储篇
- python爬虫+mongoDB存储DOTA2比赛数据总结
- Chrome 插件开发(序)
- Chrome插件开发(Extensions)
- supervisor的基本使用
- javascript节点操作
- maven项目中自动下载jar包的pom.xml配置
- 最简单的GODRAY特效
- 右键弹出菜单
- chrome开发总结(交互/权限/存储)-爬虫
- 防重复请求处理的实践与总结
- 清橙A1206 莫队
- html5解决大文件断点续传
- iOS状态栏 导航条 tabbar高度
- 指针链表总结
- JavaScript学习笔记
- oracle相关知识2
- 脏读、不可重复读 共享锁、悲观锁