用100行Nodejs代码写微博爬虫

文章为原创首发地址:https://hooyes.net/p/nodejs-weibo-spider

5a9dfda4106f9 (1).png

思路

通过关键字搜索抓取新浪微博的数据,分析得出新浪微博的搜索地址格式如下:

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或提建议。

weibo-spider.js

xhtml.js

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

jquery调用页面的方法

本文转载:http://www.cnblogs.com/chenxizhang/archive/2009/05/28/1491250.html

28820
来自专栏Java后端技术

Linux的Bash Shell详解

  1.什么是bash           bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互...

11440
来自专栏运维小白

5.5 进入编辑模式

编辑模式:就是进入到可以编辑文本文件的模式 ? 进入编辑模式方法: i ,直接在当前光标处进入编辑模式 I (大写I),光标直接移动到该行的行首,并进入编辑...

20970
来自专栏运维小白

5.7 vim实践

多练习,记好笔记 # cp /etc/dnsmasq.conf /tmp/1.txt (1) 分别向下、向右、向左、向上移动6个字符(6j 6l 6h 6k...

195100
来自专栏游戏杂谈

HTML5的Message

Message API最大的优势是跨域发送消息。关于Message更多的信息请参考:

37910
来自专栏mySoul

node Express 框架

Express事实上Node内置的http模块上构建的一层抽象。理论上所有Express实现的功能都能用Node实现

18720
来自专栏瓜大三哥

vim命令总结

23570
来自专栏软件测试经验与教训

回放loadrunner脚本时log区中文显示乱码,怎么破?

411120
来自专栏醉生梦死

vim部分常用的命令(更新时间:2018/11/07)

16150
来自专栏光变

Vim实现批量注释的方法

调试代码的时候,免不了要批量注释/取消代码注释,很多IDE都有快捷键将你选中的…

12510

扫码关注云+社区

领取腾讯云代金券