首先说一下我使用的工具:
项目地址: https://github.com/pkwenda/webBee
webBee是我为了深入学习而写的一个爬虫框架,新生儿1个月,但我打算一直做下去
首先我需要数据来测试修改我的框架啊,我想到了知乎的用户数据就是一个非常好的免费资源,不过想‘偷’知乎大大嘛...
还是要费点心思的。随便找了个知乎网红 (QaQ 美女学霸有木有!)
在这里呢,介绍一下我的框架
他是一个垂直爬虫[只针对单个网站的深入爬取]不是类似百度、google的爬虫引擎
因为还没完全开发完,暂时还没有上传到maven中央仓库,不过大家可以下载项目用maven build个jar包拿来用
目前正在完善core核心包和redis插件包
当然你也没必要写这么多,随便写写就行主要是cookie
这些东西相信用过postman 或者 Paw等web接口测试工具的童鞋很熟悉了
[ps:这部分其实有很多优化的部分,我下一步要不算的自动随机模拟useragent、代理ip等。防止反扒网站很容易抓到我们]
最主要的其实是cookie,这部分我原来其实是实现的 你利用Jquery的语法来选择 user-password的from表单进行登录的。
但是,因为目前web端五花八门而且提高用户门槛被我放弃了。一律cookie。
设置 cookie 的两种方式:
setting.setCookies(key,value).setCookies(key,value)..... //可以链式调用哦
setting.addHeader('cookie','value') //你可以一次写完也可以链式
那么有些小白童鞋就会问了怎么看网站 cookie 呢?
我们主要讲一下那些 cookie,是知乎是认为你必须携带的?我们分析下知乎发送的包
知道了吧,这可以当做有效期内的密码来用
webBee 你的方法只需要实现 PageProcessor
接口即可灵感来自 servlet
和 webMagic
的面向接口设计。
public class FetchZhihu implements PageProcessor
@Override
public void process(Page page) throws IOException {... //用来获取结果的
@Override
public Setting getSetting() {... //用来设置请求的[header/cookie/下一页等]
比如在 process 里面
page.getApi(); //这样就拿到了返回的数据
private RedisSet redisHash = new RedisSet();
redisHash.insert("zhihu_user_yet",page.getApi());//这样就完成了redis的缓存、持久化。
类似笔者巴拉巴拉一顿逼逼,开它两三个线程先来 20w 玩玩
【ps:多线程代码没测试完还没提交到github,汗。。。】
踩过的坑:
1、爬的太快被知乎封号24小时(建议大家用小号)
2、知乎不定时会对频率快的进行延时(已处理)
3、建议模仿用户行为早中晚各2个小时【这部分我会再写定时任务插件】
我自己 3 个线程[线程有最佳线程算法的哦,不要以为越多越好],不到 4 个小时后到手 20w
我使用 redis-dump 插件导出 json 文件,放在我那个 7 元一年的静态仅能运行 html 和 js 的,200mb 硬盘的,无敌屌丝服务器上跑 20w 数据,json 文件都达到 115mb,跑了 3 分钟,汗....
下面我们随便写写 js,简单分一下 20w 用户的男女比例和粉丝比例分析:
【动态图怎么传上去变静态的了!哭,重新截图吧】
对你发现了么?没错,我忘了知乎有 4w 不男不女了!!
下面粉丝分析:
10000+ 粉丝 422 人
1000-10000: 1630 人
剩余的大家自己看吧。
我倒是真没想到,我那么垃圾的服务器还能跑 20w 数据,哈哈哈哈哈哈
大家可能会有顾虑了,webBee 只能 redis?当然不是,考虑数据量方面我先弄 redis,当然我不提供插件大家也可以用 jdbc 、jpa、Mbatis、之类的,但是我会提供更简单的 mysql、mongod 等持久化操作插件,后续效果好可能会提供 elasticSearch 插件,但是涉及到工作量,还是希望大家多多参与贡献啦。
webBee 还有茫茫多的事情要处理,还会集成 htmlunit 等分析异步网站,监听弹幕网站等接口。
赶快给我点赞吧!0.0
项目地址: https://github.com/pkwenda/webBee
java 开源讨论群:147255248
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于