用100行Nodejs代码写微博爬虫
时间:2022-05-05
本文章向大家介绍用100行Nodejs代码写微博爬虫,主要内容包括思路、伪代码、真代码、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
文章为原创首发地址:https://hooyes.net/p/nodejs-weibo-spider
思路
通过关键字搜索抓取新浪微博的数据,分析得出新浪微博的搜索地址格式如下:
http://s.weibo.com/weibo/关键字
爬虫代码文件为 weibo-spider.js
假设我们要查询的关键字为 哈佛大学
则运行方式为
node weibo-spider.js 哈佛大学
执行此命令后,则爬虫会逐页抓取。
伪代码
将上面的思路用以下用伪代码表示过程
// 主程序
async function Main(keyword) {
let url = 'http://s.weibo.com/weibo/'+keyword
let data = await fetchHtml(url);
Worker(data);
}
// 抓取 url 的程序
function fetchHtml(url) {
}
// Worker 负责解析抓取的HTML并转化成 JSON
function Worker(data){
}
// 为了防止过快抓取,模拟一个线程等待
const Thread = {
Sleep : function (d) {
return new Promise((a, r) => {
setTimeout(() => {
a()
}, d)
}) }
}
// Nodejs 命令行参数
let argvs = process.argv;
let keyword = argvs[2];
Main(keyword);
执行fetchHtml的时候附带登录的 Cookie,本文把 Cookie 存在 Cookie.txt
因Cookie包含私人信息本文不提供,请自行获取,获取Cookie方法有很多种,例如:登录后,通过浏览器复制 Cookie , 以下码基于你已拿到了 Cookie 。
真代码
weibo-spider.js 100行代码,依赖一个request模块和自定义xhtml模块。
完整代码已放到Hooyes的Github上开源,欢迎Fork或提建议。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mysql常用语句集合(仅供工作日常学习参考)
- 新一代Notebook神器出现,Jupyter危险了!
- vmstat 监视内存使用情况
- Android开发重写Animation实现下拉图片后弹射回去效果示例
- Android 中RxPermissions 的使用方法详解
- Android构建Material Design应用详解
- Android中DrawerLayout实现侧滑菜单效果
- Android获取系统储存以及内存信息的方法(一)
- Android开发实现读取excel数据并保存为xml的方法
- 详解Kotlin 中使用和配置 Dagger2
- Android开发使用自定义View将圆角矩形绘制在Canvas上的方法
- Android编程双重单选对话框布局实现与事件监听方法示例
- android调用H5显示加载中效果的示例代码
- Java工作中遇到的问题Method has too many Body parameters的处理办法SpringCloud Feign报错:Method has too many Body par
- Android view滑动悬浮固定效果实现代码示例