代码拉取完成,页面将自动刷新
同步操作将从 luosl/webmagicx 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
webmagicx是一款可配置爬虫框架,webmagicx中的webmagic表示该框架扩展于webmagic,x表示该框架是一个基于xml的配置型爬虫框架。 得益于webmagic强大的可扩展能力,本框架实现了以下特性:
使用二进制包开始第一个爬虫
webmagicx提供了可执行的二进制包,免去了编译痛苦,直接下载就可以使用。你只需要以下步骤,就可以启动你的第一个爬虫:
webmagicx的结构
webmagicx的二进制包解压后会得到如下的一些文件:
webmagicx
└ spiderConf → 爬虫配置文件目录,用于存放爬虫配置文件
└ osc.spider.xml → 爬虫配置文件,请放到格式为xml,请放到spiderConf目录下,请务必以.spider.xml结尾
└ start.bat → windos环境下,快捷启动命令,可用 java -jar webmagicx-1.0-SNAPSHOT.jar 命令代替
└ webmagicx-1.0-SNAPSHOT.jar → webmagix二进制jar包
webmagicx的配置文件
爬虫配置是webmagicx的核心,至于配置文件选用xml格式的原因有以下几点:
说了这么多,其实配置也就这几个部分:
列举了这么,其实下面的配置文件就说的很清楚了。。。。
<?xml version="1.0" encoding="UTF-8" ?>
<spider enable="true">
<!-- 任务描述 -->
<desc>抓取开源中国博客的标题和作者</desc>
<!-- 定时任务配置,当startNow为true,任务会马上启动 -->
<task startNow="true" corn="0 0 */1 * * ?" />
<!-- 起始url列表,可以配置多个 -->
<startUrls>
<url>https://www.oschina.net/blog</url>
</startUrls>
<!-- 目标url正则,可以配置多个 -->
<targetUrlRegexs>
<regex xpath="//*section[@class='box-aw']">https://my\.oschina\.net/[a-z0-9A-Z]+/blog.*</regex>
</targetUrlRegexs>
<!-- 爬虫属性 -->
<attribute>
<!-- 最大抓取深度 -->
<maxDeep>0</maxDeep>
<!-- 字符集 -->
<charset>UTF-8</charset>
<!-- 超时(毫秒) -->
<timeout>20000</timeout>
<!-- 线程数 -->
<threadNum>15</threadNum>
<!-- 抓取失败后的重试次数 -->
<retryTimes>3</retryTimes>
</attribute>
<!-- 组件配置 -->
<components>
<!-- 管道配置 -->
<!-- jdbc管道 -->
<!--<pipeline>-->
<!--<class>org.luosl.webmagicx.pipeline.SimpleJdbcPipeline</class>-->
<!--<props>-->
<!--<!– 支持override和append,分别代表覆盖和追加 –>-->
<!--<model value="append"/>-->
<!--<!– 用来进行去重的字段,在 程序中内置[_url,_page]两个字段,分别表示当前url,和当前页面 –>-->
<!--<distinctField value="url"/>-->
<!--<!– 需要保存的字段,*表示所有字段 –>-->
<!--<needSaveFields value="url,content,abstruct,startTime,tag,pollutionLevel"/>-->
<!--<!– 数据库驱动 –>-->
<!--<driver value="com.mysql.jdbc.Driver"/>-->
<!--<!– 数据库url –>-->
<!--<url>jdbc:mysql://localhost/cetc_spider?useUnicode=true&characterEncoding=UTF-8</url>-->
<!--<!– 数据库用户名 –>-->
<!--<user value="root"/>-->
<!--<!– 数据库密码 –>-->
<!--<password value="123456"/>-->
<!--<!– 数据库表名称 –>-->
<!--<tableName value="tb_alert"/>-->
<!--</props>-->
<!--</pipeline>-->
<!-- csv管道 -->
<pipeline>
<class>org.luosl.webmagicx.pipeline.CSVPipeline</class>
<props>
<!-- 支持override和append,分别代表覆盖和追加 -->
<model value="override"/>
<!-- 用来进行去重的字段,在 程序中内置[_url,_page]两个字段,分别表示当前url,和当前页面 -->
<distinctField value="_url"/>
<!-- 需要保存的字段,*表示所有字段 -->
<needSaveFields value="_url,title,author"/>
<!-- 在爬虫任务终止时是否需要关闭csv文件,当任务为一次性时请设置为true,为调度任务时,设置为false -->
<closeAtTheEnd value="false" />
<!-- 保存的csv路径 -->
<path value="test.csv"/>
</props>
</pipeline>
</components>
<!-- 站点配置 -->
<site>
<!-- 浏览器标识 -->
<userAgent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36</userAgent>
<!-- 请求头 -->
<headers>
<header key="authority" value="www.oschina.net" />
</headers>
<!-- cookie -->
<cookies>
<cookie key="" value=""/>
</cookies>
</site>
<!-- 抓取字段配置 -->
<fields>
<field>
<!-- 字段名称 -->
<name>author</name>
<!-- 抽取html的xpath表达式 -->
<xpath>//*div[@class='user-info']/div[@class='name']/a/text()</xpath>
<!-- 是否格式化为纯文本 -->
<textFormat>true</textFormat>
<!-- 是否为必须字段,当为true时,若该字段未抓取到值,不会进行保存 -->
<must>true</must>
</field>
<field>
<name>title</name>
<!--
一个字段有多个xpath表达式的写法,scope取值为head,last,all;
分别表示:取第一个有效值;取最后一个有效值,取所有有效值
-->
<xpaths scope="head">
<xpath>//*div[@class='title']/text()</xpath>
<!--<xpath>//*div[@class='title']/text()</xpath>-->
</xpaths>
<textFormat>true</textFormat>
<must>true</must>
</field>
</fields>
</spider>
项目才刚刚开始,大家有什么建议和想法欢迎一起交流。同时也希望有兴趣和精力的盆友一起来完善这个项目
468248192
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。