简单的Java爬虫项目, 爬取知乎用户信息, 目前已爬取100w条(历史项目用于比赛,由于网页结构等变化,代码已过期,不再维护。没学过Java,写的渣,仅供参考)
使用WebMagic框架, Maven构建项目
JDK版本: 10 低版本需手动替换代码中的var
数据库支持: SQL Server / MySql
主程序入口: Main.java
初次运行请配置jdbc.properties和cookies.txt
添加 -s 命令行参数可配置是否清空原有数据/线程数等,默认线程数为10
默认使用MySql持久化数据, 填入基本信息即可
也支持持久化至本地的SQL Server, 请在启动程序时添加 -s 参数配置启动, 采用Windows身份验证
在浏览器中登录知乎, 在开发者工具 (F12) 中找到请求头cookies字段中的 z_c0 键值对,填入cookies.txt中
数量不限, 爬取速度 (由线程数和爬取间隔决定) 可随cookies数的增加而增加, 同时也可减少账号暂时被封的风险
爬取过程中按 ctrl+c 键停止爬虫
平均爬取速度: 1w条/h (5账号,10线程,2000+random(1000)sleep)
所用框架语法参见WebMagic文档
项目分为主程序模块Crawler,爬虫组件模块Assembly,持久化模块Database
- Main.java: 爬虫的配置,启动和终止
-
DatabasePipeline.java: 爬取信息的输出和数据的持久化
-
MyDownloader.java: 在每次下载前更新请求头信息
-
MySpider.java: cookies信息的处理,账号切换和爬取间隔的设置等
-
Processor.java: 爬虫过程主体,包括信息的抽取,后续Url的获取等
-
Database.java: 实现操作数据库相关的功能
-
User.java: 用户信息类
可视化见img/visual文件夹