用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 数组属性和方法
- Laravel+Intervention实现上传图片功能示例
- 关于laravel框架中的常用目录路径函数
- Java byte数组操纵方式代码实例解析
- php桥接模式应用案例分析
- PHP设计模式之中介者模式(Mediator Pattern)入门与应用案例详解
- laravel 出现command not found问题的解决方案
- PHP怎么搭建百度Ueditor富文本编辑器
- 使用composer命令加载vendor中的第三方类库 的方法
- PHP批斗大会之缺失的异常详解
- Laravel 6.2 中添加了可调用容器对象的方法
- php实现微信企业转账功能
- 在 Laravel 6 中缓存数据库查询结果的方法
- PHP操作XML中XPath的应用示例
- Laravel手动返回错误码示例
- laravel添加前台跳转成功页面示例