Nodejs写的搬家工具知识分享
这篇文章 主要学习这两个模块的使用:
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;
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();
抓取文章也是很简单的,为了方便从response查找dom,我们可以用这个模块 cheerio : https://github.com/cheeriojs/cheerio , 就类似于我们做.NET的时候会用 HtmlAgilityPack 来查找dom一样。
cheerio 可以去看看,他的语法跟jquery一样,使用起来很方便。
Nodejs写的搬家工具知识分享相关推荐
- java基于Springboot+vue+nodejs的口腔牙齿保护知识分享 element
系统实现管理员:首页.个人中心.会员管理.病例就诊信息管理.牙齿保健产品管理.复查提醒管理.预约挂号管理.药品信息管理.留言板管理.系统管理.订单管理,会员:首页.个人中心.病例就诊信息管理.复查提醒 ...
- 微信小程序nodejs+python+php+springboot+vue 法律知识分享科普系统平台
要想实现法律知识分享平台的各项功能,需要后台数据库的大力支持.管理员验证注册信息,收集的信息,并由此分析得出的关联信息等大量的数据都由数据库管理.本文中数据库服务器端采用了Mysql作为后台数据库 紧 ...
- 知识分享之好用的工具——RaiDrive本地挂载各种云盘
知识分享之好用的工具--RaiDrive本地挂载各种云盘 背景 开发环境 系统:windows10 内容 RaiDrive 之前一直使用的是oneDrive,本地使用还可以,就是容量小点,后来发现阿里 ...
- 【知识分享】HTML 与 CSS
主要内容 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yat1ltCN-1608264035268)(/HTML + CSS.png)] HTML HTML(Hy ...
- 实用收藏,外贸常用工具大全分享-跨境知道
做外贸,要学习的东西很多,除最基础的外贸知识以外,还需要同时具备多项技能:找客户.客户背调.写开发信.美化图片.了解政策.谈判营销...... 身边的外贸老鸟都是善于使用工具,善于总结,通过工具提高工 ...
- html5扩展函数的使用方法,知识分享:JavaScript基础语法
知识分享:JavaScript基础语法 原创 mb5fd868d58f1472021-01-22 16:52:56©著作权 阅读数 41 ©著作权归作者所有:来自51CTO博客作者mb5fd868d5 ...
- 企业知识分享系统的设计与实现
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, ...
- Baklib知识分享|知识库对企业来说有哪些意义?
随着时间的推移,很多公司都开始构建自己的知识库,然而很多公司并不知道知识库的重要性,只是在看到其他企业建立了自己的知识库之后纷纷效仿.知识库有何种魔力能让这么多企业趋之若鹜? 今天Baklib便跟大家 ...
- 【青岛seo排名优化】seo知识分享:教你如何交换好的友链
[ 青岛seo排名优化]seo知识分享:教你如何交换好的友链 大家都知道交换友情链接是网站外部链接建设的一个重要策略,友情链接不仅可以给网站带来很不错的权重,而且友情链接也是属于高质量链接其中的一种, ...
- 大数据知识分享之服务器渲染
大数据知识分享之服务器渲染 博客前言: 服务器渲染 1.什么是服务器渲染 2.服务器渲染与客户端渲染优劣对比 源码分享 示意图 博客前言: 疫情期间,停下脚步,终于有时间去总结自己.反省自己,从而有机 ...
最新文章
- 使用动态解析设置***
- python获取输入框内容长度_python3 tkinter 获取输入字符串长度
- ORACLE SQL调优之执行计划与隐藏参数_complex_view_merging
- 浏览器中的XML与JavaScript
- vue-cli中的webpack的config配置详细说明
- Texture Inspection 纹理检验halcon算子,持续更新
- 谈谈Winform程序的界面设计
- lua --- 表操作
- EventBus 使用介绍
- 测开之路十六:@classmethod与@staticmethod
- 【QT安装】【QT+opencv安装】
- 计算机网络拓扑结构功能是,计算机网络拓扑结构
- win7系统开启snmp服务器配置,Win7系统怎么开启snmp服务【图文】
- python中for in的用法python中for in的用法
- G1 垃圾收集器详解
- JavaEE学习08(解决项目导入eclipse后项目中的红错号)
- 谷哥学术2022年资源分享下载列表 3/20
- java展示树形结构的两种方式
- 表格对角线两边打字_表格对角线两边打字_表格斜线一分为二怎么打字(excel斜杠分割表格打字)...
- 超1300名研究生被清退!