这篇文章 主要学习这两个模块的使用:

request-promise-native : https://github.com/request/request-promise-native
cheerio :https://github.com/cheeriojs/cheerio

nodejs有个request模块,专门处理这些网络请求方面的。 就像.NET也有request,webclient,httpclient啥的。。。

nodejs的request使用方法在这,自己查一下: https://github.com/request/request

而我喜欢用async和await的写法,因此我还引入了request-promise-native 模块, https://github.com/request/request-promise-native  ,这个就相当于.NET中httpclient吧。

好了背景就讲这么多,我们就开始简单的使用request-promise-native,进行模拟提交。

我用淘宝镜像安装模块,会比较快比较快一些,注册淘宝镜像方式:

npm install -g cnpm --registry=https://registry.npm.taobao.org

然安装模块:

cnpm install --save request
cnpm install --save request-promise-native

我们登陆后 ,尝试发一篇文章,然我们分析一下提交的东西:

主要是 Cookie以及 FormData。

好了,然后我们写一个 cnblogs,来处理提交,代码:

const request = require('request-promise-native');
// const proxy = 'http://127.0.0.1:8888';
const url = 'https://i.cnblogs.com/EditPosts.aspx?opt=1';
class Cnblogs {
static async save({ title, content, postdate }) {
let response = await request({
url: url,
method: 'POST',
headers: {
Cookie: '[隐私隐私隐私]',
},
form: {
__VIEWSTATE: '===========',
__VIEWSTATEGENERATOR: 'FE27D343',
Editor$Edit$txbTitle: title,
Editor$Edit$EditorBody: `<p style="color: red; font-weight: bold;">原文发布时间为:${postdate} —— 来源于本人的百度文章 [由搬家工具导入]</p>${content}`,
Editor$Edit$APOptions$Advancedpanel1$cklCategories$0: '1031596',
Editor$Edit$Advanced$ckbPublished: 'on',
Editor$Edit$Advanced$chkDisplayHomePage: 'on',
Editor$Edit$Advanced$chkComments: 'on',
Editor$Edit$Advanced$chkMainSyndication: 'on',
Editor$Edit$lkbPost: '发布'
}
});
return response;
}
}
module.exports = Cnblogs;
嗯,我们建立一个 app.js 调用一下测试吧:
const cnblogs = require('./cnblogs');
const main = async () => {
try {
let response = await cnblogs.save('测试','测试内容','2018-01-01');
console.log(response);
} catch (err) {
console.error('[ERROR]', err);
}
};
main();

执行node app,我们发现, 导入成功了。。。。
我用类似的方法 从自己百度文章抓取文章,然后调用 cnblogs.save(); 进行导入:

抓取文章也是很简单的,为了方便从response查找dom,我们可以用这个模块 cheerio : https://github.com/cheeriojs/cheerio , 就类似于我们做.NET的时候会用 HtmlAgilityPack 来查找dom一样。

cheerio 可以去看看,他的语法跟jquery一样,使用起来很方便。

Nodejs写的搬家工具知识分享相关推荐

  1. java基于Springboot+vue+nodejs的口腔牙齿保护知识分享 element

    系统实现管理员:首页.个人中心.会员管理.病例就诊信息管理.牙齿保健产品管理.复查提醒管理.预约挂号管理.药品信息管理.留言板管理.系统管理.订单管理,会员:首页.个人中心.病例就诊信息管理.复查提醒 ...

  2. 微信小程序nodejs+python+php+springboot+vue 法律知识分享科普系统平台

    要想实现法律知识分享平台的各项功能,需要后台数据库的大力支持.管理员验证注册信息,收集的信息,并由此分析得出的关联信息等大量的数据都由数据库管理.本文中数据库服务器端采用了Mysql作为后台数据库 紧 ...

  3. 知识分享之好用的工具——RaiDrive本地挂载各种云盘

    知识分享之好用的工具--RaiDrive本地挂载各种云盘 背景 开发环境 系统:windows10 内容 RaiDrive 之前一直使用的是oneDrive,本地使用还可以,就是容量小点,后来发现阿里 ...

  4. 【知识分享】HTML 与 CSS

    主要内容 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yat1ltCN-1608264035268)(/HTML + CSS.png)] HTML ​ HTML(Hy ...

  5. 实用收藏,外贸常用工具大全分享-跨境知道

    做外贸,要学习的东西很多,除最基础的外贸知识以外,还需要同时具备多项技能:找客户.客户背调.写开发信.美化图片.了解政策.谈判营销...... 身边的外贸老鸟都是善于使用工具,善于总结,通过工具提高工 ...

  6. html5扩展函数的使用方法,知识分享:JavaScript基础语法

    知识分享:JavaScript基础语法 原创 mb5fd868d58f1472021-01-22 16:52:56©著作权 阅读数 41 ©著作权归作者所有:来自51CTO博客作者mb5fd868d5 ...

  7. 企业知识分享系统的设计与实现

    摘  要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, ...

  8. Baklib知识分享|知识库对企业来说有哪些意义?

    随着时间的推移,很多公司都开始构建自己的知识库,然而很多公司并不知道知识库的重要性,只是在看到其他企业建立了自己的知识库之后纷纷效仿.知识库有何种魔力能让这么多企业趋之若鹜? 今天Baklib便跟大家 ...

  9. 【青岛seo排名优化】seo知识分享:教你如何交换好的友链

    [ 青岛seo排名优化]seo知识分享:教你如何交换好的友链 大家都知道交换友情链接是网站外部链接建设的一个重要策略,友情链接不仅可以给网站带来很不错的权重,而且友情链接也是属于高质量链接其中的一种, ...

  10. 大数据知识分享之服务器渲染

    大数据知识分享之服务器渲染 博客前言: 服务器渲染 1.什么是服务器渲染 2.服务器渲染与客户端渲染优劣对比 源码分享 示意图 博客前言: 疫情期间,停下脚步,终于有时间去总结自己.反省自己,从而有机 ...

最新文章

  1. 使用动态解析设置***
  2. python获取输入框内容长度_python3 tkinter 获取输入字符串长度
  3. ORACLE SQL调优之执行计划与隐藏参数_complex_view_merging
  4. 浏览器中的XML与JavaScript
  5. vue-cli中的webpack的config配置详细说明
  6. Texture Inspection 纹理检验halcon算子,持续更新
  7. 谈谈Winform程序的界面设计
  8. lua --- 表操作
  9. EventBus 使用介绍
  10. 测开之路十六:@classmethod与@staticmethod
  11. 【QT安装】【QT+opencv安装】
  12. 计算机网络拓扑结构功能是,计算机网络拓扑结构
  13. win7系统开启snmp服务器配置,Win7系统怎么开启snmp服务【图文】
  14. python中for in的用法python中for in的用法
  15. G1 垃圾收集器详解
  16. JavaEE学习08(解决项目导入eclipse后项目中的红错号)
  17. 谷哥学术2022年资源分享下载列表 3/20
  18. java展示树形结构的两种方式
  19. 表格对角线两边打字_表格对角线两边打字_表格斜线一分为二怎么打字(excel斜杠分割表格打字)...
  20. 超1300名研究生被清退!

热门文章

  1. Android(安卓)手机变砖复活的三种恢复方法
  2. 常见Sql面试题及答案
  3. 高等数学学习笔记——第五十七讲——平面与直线的位置关系
  4. html英文特殊字体代码,字体_中英文字体等(示例代码)
  5. EFRCN对应频段号
  6. python 英语翻译 excel_Excel自动翻译
  7. 前端 视频标签 video的一些特殊属性详解
  8. Eplan破解文件名称说明:
  9. 基于ssm公租房管理系统
  10. cad立面索引符号 规范_园林景观设计规范,你不可或缺的真干货