前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Electron+Vue使用Nodejs开发爬虫

Electron+Vue使用Nodejs开发爬虫

作者头像
码客说
发布2020-11-13 15:03:22
1.5K0
发布2020-11-13 15:03:22
举报
文章被收录于专栏:码客码客

添加依赖

代码语言:javascript
复制
npm install request cheerio async -save

request

代码语言:javascript
复制
var request = require('request');

// 通过 GET 请求来读取 http://cnodejs.org/ 的内容
request('http://cnodejs.org/', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    // 输出网页内容
    console.log(body);
  }
});

请求跨域的解决方式

代码语言:javascript
复制
// Create the browser window.
const win = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
        webSecurity: false,
        nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
    }
});

app.commandLine.appendSwitch("disable-features", "OutOfBlinkCors");

主要添加了第6行和第11行,正式运行时删除即可

文件夹路径

代码语言:javascript
复制
const { app } = require('electron')
app.getPath(name)

app位于主进j程中,渲染进程

代码语言:javascript
复制
const { app } = window.require("electron").remote;

String - You can request the following paths by the name:

  • home 用户的 home 文件夹(主目录)
  • appData
代码语言:javascript
复制
Per-user application data directory, which by default points to:

- `%APPDATA%` Windows 中
  • $XDG_CONFIG_HOME or ~/.config Linux 中
    • ~/Library/Application Support macOS 中
    • userData 储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称
    • temp 临时文件夹
    • exe当前的可执行文件
    • module The libchromiumcontent
    • desktop 当前用户的桌面文件夹
    • documents 用户文档目录的路径
    • downloads 用户下载目录的路径
    • music 用户音乐目录的路径
    • pictures 用户图片目录的路径
    • videos 用户视频目录的路径
    • recent Directory for the user’s recent files (Windows only).
    • logs应用程序的日志文件夹
    • pepperFlashSystemPlugin Pepper Flash 插件的系统版本的完成路径。
    • crashDumps Directory where crash dumps are stored.

Returns String - A path to a special directory or file associated with name. On failure, an Error is thrown.

If app.getPath('logs') is called without called app.setAppLogsPath() being called first, a default log directory will be created equivalent to calling app.setAppLogsPath() without a path parameter.

文件下载

添加

代码语言:javascript
复制
npm install node-fetch --save

引用

代码语言:javascript
复制
var fetch = window.require("node-fetch");
var fs = window.require("fs");

下载

代码语言:javascript
复制
download(u, p) {
    var path = this.outpath + "\\" + p;
    return fetch(u, {
        method: "GET",
        headers: { "Content-Type": "application/octet-stream" }
    })
        .then(res => res.buffer())
        .then(_ => {
        fs.writeFile(path, _, "binary", function(err) {
            console.log(err || path);
        });
    });
}
down_action() {
    var url =
        "http://shiti_upload.91taoke.com/upload/2019/11/23/1548420902.files/image001.png";
    this.download(url, url.split("/").reverse()[0]);
}

文件上传

electron写应用时,会遇到自动上传的需求。但是H5中只能通过input(type=file)来手动上传,JS又没有读取文件的权限,此时,我们可以借助node模块完成需求。

代码语言:javascript
复制
const request = require("request");
var options = {
    'method': 'POST',
    'url': 'https://www.psvmc.com/api2/upload',
    'headers': {
        'Host': 'www.psvmc.com',
        'Referer': 'https://www.psvmc.com/restore',
        'Cookie': ''
    },
    formData:{
        file:fs.createReadStream(`./widget.jpg`),
        type:'image/jpg',
        name:'widget.jpg'
    }
};
request(options, function (error, response) {
    if (error) throw new Error(error);
    console.log(JSON.parse(response.body));
});
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 添加依赖
  • 文件夹路径
  • 文件下载
  • 文件上传
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档