JavaCrawling
"奇伢爬虫"是基于sprint boot 、 WebMagic 实现 微信公众号文章、新闻、csdn、info等网站文章爬取,可以动态设置文章爬取规则、清洗规则,基本实现了爬取大部分网站的文章。
Install / Use
/learn @qiyaTech/JavaCrawlingREADME
奇伢爬虫使用介绍
导航
一.简介
奇伢爬虫基于spring boot 、 WebMagic 实现 微信公众号文章、新闻、csdn、info等网站文章爬取,可以动态设置文章爬取规则、清洗规则,基本实现了爬取大部分网站的文章。
(奇伢爬虫技术讨论群:365155351,大家可以加群一起来讨论哦~)
二.运行项目
1.运行环境
项目开发环境:IntelliJ IDEA 15 , JDK 1.8
2.运行必备配置
2.1.数据库配置
- 先创建数据库,然后修改配置文件application-dev.properties的如下属性:
spring.datasource.url = jdbc:mysql:// 数据库ip地址 : 数据库端口号/数据库名称?useUnicode=true&characterEncoding=UTF-8spring.datasource.username = 数据库用户名spring.datasource.password = 数据库密码
2.2.数据导入
我们提供了一些基础数据供大家测试,在新建的数据库中执行文件db_sql.txt中的sql,就可以将一些必备的表及数据导入数据库了。
2.3.redis 配置
- 项目中用到 redis 对一些数据的存储, 如果之前没有安装过 redis, 需要先安装 redis ,然后修改配置文件 application-dev.properties的如下属性:
spring.redis.host = redis ip 地址spring.redis.password = redis 密码spring.redis.port = redis 端口
2.4.七牛云存储配置
-
注册七牛云账号,登录后在控制台新建“存储空间“,(保存存储空间的名称,配置会用到),并在“个人中心——密钥管理“中查看 ak 与 sk。
-
修改配置文件 application-dev.properties的如下属性:
-
qiniu.bucket = 七牛存储空间名称 -
qiniu.accessKey = 七牛 ak -
qiniu.secretKey = 七牛 sk -
qiniu.http.context = 七牛外链域名
3.项目运行
-
完成了运行必备配置就可以运行项目了**(注:上述配置步骤缺一不可哦~~)**
-
启动项目只需要运行java文件BossApplication.java就可以了。
-
项目成功启动后,访问 http://localhost:8015 进入爬虫管理平台。
-
平台登录用户名:admin
-
平台登录密码:admin
4.运行效果及爬取操作
- 成功登录爬虫管理平台后的界面*(当你看到这个界面时就说明你已成功启动项目了~~)*:

- 爬取操作:
项目已经运行起来了,现在我们就来看一下怎么爬取一个网站的文章吧。(现在你打开的爬取平台上已经有了我们做好的一些爬取任务配置,只需要按照下面的步骤操作就可以爬取到很多文章了~接下来想自己试着爬取某网站文章可参照爬取网站文章操作手册。
- (1).请点击界面上左侧菜单:“爬虫管理“——“任务监控管理“,可以看到有一些我们配置好的爬取任务,下图是“任务监控管理“界面,以及对个别参数进行了说明:

-
(2).**执行爬取任务:**接下来我们点击“运行“按钮,这时你可以去查看下控制台,控制台中有输出爬取文章的日志。
-
(3).查看爬取的文章:我们将爬取到的文章进行解析后保存到了数据库中。
-
你可以在表 “article“ 中查看到爬取文章的相关属性:文章标题、作者、列表图片url、发布时间、点赞数、浏览数等等。
-
在表 “article_detail“ 中可以查看到爬取文章的内容。
-
(4).**清洗爬取的文章:**清洗,即是对所爬文章的样式的调整。具体操作如下:
-
点击你刚爬取任务对应的“清洗“按钮,会出现如下界面:

-
这个清洗界面中会显示出你爬取的文章,你可以针对个别文章进行清洗,也可以一次性选中多条,或全部清洗。
-
清洗完成后你可以在 “article_detail“ 中找到对应的文章内容,看下与之前对比是不是样式有了一些变化呢~
(到这里,整个爬取文章以及清洗的操作就完成了。)
三.爬取网站文章操作手册
这里主要向大家介绍爬取一个网站文章的具体配置操作:
-
1.添加站点:
-
站点即是各个网站或公众号。爬取网站文章首先要添加一个站点,下图是站点管理界面:

- 添加站点界面如下图,添加站点是爬取文章的第一步。

-
2.添加爬取任务:
-
任务是对每个站点爬取任务进行管理的,我们每个站点可以有多个爬取任务,这里我们主要针对两种情况进行爬取(具体爬取的任务配置在爬取文章的配置手册中有详细说明):
- 对网站或公众号每日更新文章进行爬取;
- 对网站或公众号历史文章进行爬取。
- 任务管理界面如下:

- 添加任务:

添加任务时,大家要注意两个字段哦:
-
是否需要手动执行: 如果选择需要手动执行,则每次重启完项目后需要手动点击 “任务监控管理“ 界面中对应任务的启动按钮哦~ 否则每次重启完项目后系统中会自动启动爬取任务的。
-
是否定时执行: 如果选择定时执行,则在任务启动后系统中每天会有两个时间点定时去爬取文章,否则会一直爬取哦~(在爬取一定时间后线程会休眠一段时间,再继续爬取的)
添加任务最重要的是任务规则配置,详见爬取文章配置手册。
(添加完任务后就可以执行爬取任务了,爬取任务的操作我们上面已经讲过了哦~)
四.爬取文章配置手册
网站爬取任务规则配置
1.任务规则配置参数介绍:
- 任务规则配置参数如下图:

- 参数说明:
- spider : 爬虫配置信息;
- site : 站点信息;
- condition:历史文章爬取条件(只限于历史爬取使用,爬取更新可去掉此参数);
- rule : 爬取内容的规则配置;
- wechat: 爬取内容的规则配置;
- rinseRules : 清理数据配置;
- isCircle : 是否需要循环爬取(主要用于爬取更新,值为:true / false);
- circleInterval 循环间隔时间单位(秒)。
任务规则参数详细配置:
(1).spider 爬虫配置:
-
参数说明:
-
thread : 线程数;
-
startUrl:开始爬取页面url,以infoQ网站为列,我们爬取新闻列表,开始地址为下图所示:
-
downloader:下载器设置,普通网站一般设为空值; weChatDownloader :微信爬取专用。微信爬取网址必须设置参数。 dynamicProxyHttpClientDownloader:支持动态代理ip,Downloader。在没有设置下载器,动态动态代理参数 (dynamicProxy)为true时 会自动设置本下载器。设参数置参考site 站点配置:
-
processer:处理器
-
项目中处理器主要有以下处理器:
-
weChatUpdatePageProcess:微信爬取更新专用; 需设置下载器weChatDownloader 微信公众号更新爬取示例:
{"spider": {"thread": 1,"startUrl": "http://weixin.sogou.com/weixin?type=1&s_from=input&query=oschina2013&ie=utf8&_sug_=n&_sug_type_=","downloader": "weChatDownloader","processer": "weChatUpdatePageProcess","siteid": 13,"pipeline": ["exceptionPipeline","rinseCommPipeline","rinseWeChatPipeline","mySqlArticlePipeline"]},"site": {"domain": "mp.weixin.qq.com","proxy": [],"retry": 3,"sleepTime": 5000,"headers": [],"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"},"condition": {"endTime": "","startTime": ""},"wechat": {"name": "oschina2013","uid": "oschina2013","url": "http://weixin.sogou.com/weixin?type=1&s_from=input&query=oschina2013&ie=utf8&_sug_=n&_sug_type_="},"rule": {"detailregex": "http://mp\\.weixin\\.qq\\.com/s?\\S+","listregex": "http://mp.weixin.qq.com/profile?src","loadlistxpath":"//*[@id='main']/div[4]/ul/li[1]/div/div[2]/p[1]","listxpath": "","detailxpath": [{"name": "title","reg": "","value": "//*[@id='activity-name']\/text()"},{"reg": "","value": "//*[@id='post-date']\/text()","name": "publicTime","simpleDateFormat": "yyyy-MM-dd"},{"name": "author","reg": "","value": "//*[@id='post-user']\/text()"},{"name": "beforeContent","reg": "","value": "//*[@id='js_content']"}]},"isCircle": true,"circleInterval":10800,"rinseRules":[{"action": "add","type":"attr","cssquery": "img","name": "width","vluae": " 100%"},{"action": "add","type":"attr","cssquery": "img","name": "height","vluae": "auto"},{"action": "replace","type":"attr","cssquery": "img","name": "style","source": "width: \\d+[.\\d+]px","target": "width: 100%"},{"action": "replace","type":"attr","cssquery": "img","name": "style","source": "width: auto","target": "width: 100%"},{"action": "copy","type":"attr","cssquery": ".video_iframe","source": "data-src","target": "src"}]} -
weChatHistoryPageProcess:微信爬取历史专用; 需设置下载器weChatDownloader 微信公众号历史爬取示例:
{"spider": {"thread": 1,"startUrl": "https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MjM5NzM0MjcyMQ==&f=json&frommsgid=&count=10&scene=124&is_ok=1&uin=777&key=777&pass_ticket=QRnKzE8eCui1gEzcgTzGlMMUSP9d7DzbTGtoQOU1OCKoI9yMgM1eTn2dNoBQlv0K&wxtoken=&x5=1&f=json","downloader": "weChatDownloader","processer": "weChatHistoryPageProcess","siteid": 13,"pipeline": ["rinseCommPipeline","rinseWeChatPipeline","mySqlArticlePipeline"]},"site": {"domain": "mp.weixin.qq.com","proxy": [],"retry": 3,"sleepTime": 3000,"headers": [{"name": "Cookie","value": "news_commid=oDOGxv_sCQKLRbPUnpFOlBxc12sk; wxtokenkey=3af5afc4ad6dc8d50ddb4155017fee8169c40528ecbaedb532c0e00323feea4d; wxticket=898662085; wxticketkey=28a040f7ad3354057a1de315330438a969c40528ecbaedb532c0e00323feea4d; wap_sid=CIDixZ0HEkBiWmtxZTF6QkpTazIzWk1sbUhINUFUek9kM1NBOTFrUE9hOGJId19aeVJOYUlxQy1lMTdXcWxYNmxZR1FuSUYtGAQgpBQogZiS9wgwiYGZxwU=; wap_sid2=CIDixZ0HElxvMXNia1Z0Q1ZrTHNfYWdiODlFVWRlUTJ0cS1qU0U5YUlrbmFLX1h6bDN3WFJDUW5RaG14TVNTc0xUb1hLNEszNHB2UHgxQUt6SEFpcDFKaFpyVDh5b01EQUFBfjCJgZnHBQ=="}],"userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"},"condition": {"startTime":"","endTime":""},"wechat": {"name": "","uid": "","url": "https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MjM5NzM0MjcyMQ==&f=json&frommsgid=[MESSAGEID]&count=10&scene=124&is_ok=1&uin=777&key=777&pass_ticket=QRnKzE8eCui1gEzcgTzGlMMUSP9d7DzbTGtoQOU1OCKoI9yMgM1eTn2dNoBQlv0K&wxtoken=&x5=1&f=json"},"rule": { //同上例子配置 },"isCircle": false,"rinseRules":[ // 同上例子配置 ]} -
XPathWebPageProcess:普通网站爬取使用(包括下一页地址页面上有的历史爬取)。 普通网站爬取示例:
{"spider" : {"thread" : 1,"startUrl" : "http://www.ceibsreview.com/list/index/classid/128","downloader" : "","processer" : "XPathWebPageProcess","siteid" : "18","pipeline" : ["rinseCommPipeline","mySqlArticlePipeline"]},"site" : {"domain" : "www.ceibsreview.com","retry" : 3,"sleepTime" : 5000,"headers" : [{"name" : "Content-Type:","value" : "application\/json"}],`"cookies" :
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
