文章为原创首发地址: 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
来源: https://cloud.tencent.com/developer/article/1068729?fromSource=waitui