多语言展示
当前在线:896今日阅读:176今日分享:34

java爬虫框架webmagic的搭建与示例,爬取csdn

最近在捣鼓python,被python的神话传说洗脑了,用了一阵才发现也没有真的那么牛逼,关键还是看用熟悉哪个,而且python相对java的简略,其实也是有利有弊,自由度高了,项目一大,可读性就降低了,而且我发现python资料远没有java资料来的多,所以打算将自己的项目重新转会java来编写,这里我们说一下java的爬虫跨家webmagic
工具/原料
1

java

2

eclipse

方法/步骤
1

首先在在网上下载webmagic的依赖jar包,直接去官网下载即可,webmagic是github上的一个开源项目

2

将下载下来的jar包解压,放入我们新建的java工程项目中,然后bulidpath,将jia包依赖进来

3

之后我们创建一个自己的处理类,这个类需要实现PageProcessor接口,然后重写未实现的方法

4

只需要重写俩个方法,我们就可以完成一个webmagic爬虫示例

5

第一个方法是用来对爬虫进行相关参数的设置的,包括断线重连间隔和请求间隔

6

然后我们爬去csdn上的最新文章标题,下面就是代码全文:package spider;import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.processor.PageProcessor;public class BaiDuJingYan implements PageProcessor { //爬虫的配置,                            重试时间             抓取间隔 private Site site = Site.me().setRetryTimes(3).setSleepTime(100); //计数器 private static int count = 0; public static void main(String[] args) { long startTime,endTime; System.out.println("开始爬取..."); startTime = System.currentTimeMillis(); Spider.create(new BaiDuJingYan()).addUrl("https://www.cnblogs.com/").thread(5).run(); endTime = System.currentTimeMillis(); System.out.println("爬取结束,耗时约"+((endTime - startTime)/1000)+"秒,爬取了"+count+"条记录"); } @Override public Site getSite() { return site; } @Override public void process(Page page) { //判断链接是否符合http://www.cnblogs.com/数字字母-/p/7个数字.html格式 if(!(page.getUrl().regex("http://www.cnblogs.com/[a-z 0-9 -]+/p/[0-9]{7}.html").match())) { //加入满足条件的链接 page.addTargetRequests( page.getHtml().xpath("//*[@id=\"post_list\"]/div/div[@class='post_item_body']/h3/a/@href").all() ); }else { //获取页面需要的内容 System.out.println("抓取的内容:"+page.getHtml().xpath("//*[@id=\"Header1_HeaderTitle\"]/text()").get()); count++; } }}

7

然后我们运行一下代码,成功爬去csdn网站上的一些数据并将其打印了出来,ok,webmagic框架接入成功

8

ps:补充一个问题,那个错误提示并不影响我的运行,所以没有管,可是有些小伙伴反映不解决这个问题根本没法跑,嗯下面解决一下这个打日志的jar没加载上的问题在复制进来的lib目录下创建一个名叫 log4j.properties 的文件log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n然后将这个lib目录加入到run命令的配置中:add the location of your log4j.properties file to the Classpath in Eclipse.Make sure your project is open in Eclipse, then click on the "Run" menu at the top of Eclipse and click on the following:RunRun ConfigurationsClasspath (tab)User EntriesAdvanced (button on the right)Add Foldersthen navigate to the folder that contains your log4j.properties fileApplyRun

注意事项

如果觉得有用就给我投票吧(~ ̄▽ ̄)~

推荐信息