网页文章采集工具(ES62.1的模板和经验心得:ES6template支持)

优采云 发布时间: 2022-01-06 01:02

  网页文章采集工具(ES62.1的模板和经验心得:ES6template支持)

  基于Electon的图片采集是什么工具?针对这个问题,本文文章详细介绍了相应的分析和解答,希望能帮助更多想解决这个问题的朋友找到更简单的方法。

  

  该工具的界面是这样的。顶部是一些导出数据,提交到服务器的操作,以及输入URL的输入框。底部主要是爬取结果的显示区域。

  技术架构:

  Electron+Nodejs

  1

  实现思路:

  1.1 *敏*感*词*webview事件并注入js代码

  使用electron的webContents来监控需要获取图片的网页,在网页加载时触发'dom-ready'事件,然后向网页中注入JS代码。

  这个api主要用于:

  webContents.executeJavaScript(code[,userGesture,callback])

  喜欢:

  win.webContents.on('dom-ready', () => {

 win.webContents.executeJavaScript(code[,userGesture,callback])

  });

  1.2 遍历 HTML 中的图片 URL

  这里需要注意的是,在background-image中写了很多网站图片,而不是使用img标签。因此,将两者结合起来。

  获取img标签的所有图片:

  身体图像

  获取背景图片需要用到window.getComputedStyle,通过css属性获取。

  window.getComputedStyle("元素", "伪类");

  var dom = document.getElementById("test"),

   style = window.getComputedStyle(dom , ":after");

  1.3 返回得到的结果

  电子注入webview的代码可以通过return返回,

  也可以写成注入的代码:

  

electron.remote.getGlobal(‘webWin').webContents.send('autoChat',res);

  在渲染过程中,通过:

  electron.ipcRenderer.on('autoChat',(e,result)=>{

 console.log(result,'ipc');

});

  接收结果。

  2

  一些经验和体会:

  2.1 ES6 模板字符串

  Electron 支持 ES6,ES6 引入了一种新的字符串字面量语法,我们称之为模板字符串。

  var code=``;

  除了在普通字符串中使用反引号字符“而不是引号”或“之外,它们看起来与普通字符串相同。在最简单的情况下,它们的行为与普通字符串相同:

  var code=" var dom=document.get......  "

  与普通字符串不同,模板字符串可以写成多行:

  var code=`

var dom=document......

function getURL(){

let v=.....

`;

  很适合写注入的js代码~

  2.2 电子加密

  由于electron打包的程序直接暴露源码,所以在resources文件夹下的app文件夹下。

  我们可以使用 asar 来加密我们的源代码

  全局安装:

  npm install -g asar

  将resources中的app文件夹打包为app.asar

  asar pack ./app app.asar

  发现一个坑,asar加密的node_modules中的一些库无法引用,所以我调整了打包方式,将node_modules和我的代码分开存放,例如

  ./js/

./page/index.html

./css/

./main.js

./node_modules/

  ./app/spider/js/

./app/spider/css/

./app/spider/page/index.html

./app/node_modules/

./app/main.js

  将spider文件夹整体打包为spider.asar。在这种情况下,您需要在 package.json 中更改它:

  “main": “./spider.asar/main.js",

  您可以正常引用 node_modules 中的库。

  3

  基于图像的功能扩展

  图像捕获后,我们可以根据图像做一些扩展功能。

  例如:

  3.1 将所有图片保存到本地

  遇到好素材网站,想一口气把所有的图都下载下来。您可以使用此功能。这个比较简单。使用 nodejs 库图像下载器下载所有 url。

  3.2 分析图片的主色调

  这里还有一个nodejs库,node-vibrant,可以提取图片的主色和百分比。我们可以把最近六个月bahance上最火爆的项目的图片拍下来,分析它们的颜色,做出颜色趋势报告。

  

  3.3 图片库

  作为我最近的人工智能设计师

  DIY一个人工智能设计师_v0.0.1

  照片库。这时候我们需要添加一个标签内容,就是自动识别图片的内容,作为图片的关键词,方便人工智能设计师的智能匹配。这里可以调用clarifai的图片识别api:

  安装

  // 通过 NPM 安装clarifai SDK

npm install clarifai

  Nodejs 使用 clarifai

  //初始化

const Clarifai = require('clarifai'); 

var app = new Clarifai.App( 

'xxxxxG1MIAGH9RRJ4YSV410paPZWhfTpOeerEb',

'KFxxxxxbAwo8aIZ3SRAJO0IJq-CtLQUj9Ph7mt' ); 

  确认

  // 通过上传一个图片的URL,识别图片的内容

app.models.predict(Clarifai.GENERAL_MODEL, 

'https://samples.clarifai.com/metro-north.jpg').then(

  function(response) {

   console.log(response);

  },function(err) { 

   console.error(err); 

  });

  识别效果可以在上图中的标签部分看到。我通过这个api自动标记它。

  关于基于Electon的图片采集工具的问题解答分享到这里,希望以上内容对大家有帮助,如果还有很多疑问没有解决,可以关注到易速云行业资讯频道了解更多相关知识。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线