webmagic采集CSDN的Java_WebDevelop页面

项目中使用到了webmagic,采集论坛一类的页面时需要一些特殊的配置。在此记录一下


先来看看我要采集的页面


点击第2页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=2

点击尾页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=758

也就是说我们需要采集的范围是从2到758页


这样我们就可以通过自己拼接一个url来模拟所有 的连接了代码如下:

<span style="white-space:pre">	</span>List<String> list=new ArrayList<String>();

        for (int i=2;i<758;i++){
            list.add("http://bbs.csdn.net/forums/Java_WebDevelop?page="+i);
        }


再来看看如何匹配页面的所有title


page.putField("title", page.getHtml().css(".title>a","text").all().toString());

其中css方法的第二个参数是选择a标签的text内容而不包括<a>标签本身


总体代码如下:

package us.codecraft.webmagic;

import org.apache.http.HttpHost;
import org.apache.http.auth.UsernamePasswordCredentials;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.processor.PageProcessor;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by hepan on 2016/5/23.
 */
public class CSDNJavaWebDevelopProcessor implements PageProcessor {
    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000)
            .setHttpProxy(new HttpHost("192.168.2.49", 8080))
            .setUsernamePasswordCredentials(new UsernamePasswordCredentials("hepan", "abcdef"));
    /**
     * process the page, extract urls to fetch, extract the data and store
     *
     * @param page page
     */
    @Override
    public void process(Page page) {
        List<String> list=new ArrayList<String>();

        for (int i=2;i<700;i++){
            list.add("http://bbs.csdn.net/forums/Java_WebDevelop?page="+i);
        }

        page.addTargetRequests(list);
        page.putField("title", page.getHtml().css(".title>a","text").all().toString());
    }

    /**
     * get the site settings
     *
     * @return site
     * @see Site
     */
    @Override
    public Site getSite() {
        return site;
    }


    public static void main(String[] args) {

        Spider.create(new CSDNJavaWebDevelopProcessor())
                //设置采集的起始页面
                .addUrl("http://bbs.csdn.net/forums/Java_WebDevelop")
                //输出
                .addPipeline(new ConsolePipeline()).thread(5).run();
    }
}

最后输出结果:

D:\Java\jdk1.8.0_45\bin\java -Didea.launcher.port=7533 "-Didea.launcher.bin.path=D:\JetBrains\IntelliJ IDEA 15.0\bin" -Dfile.encoding=UTF-8 -classpath "D:\Java\jdk1.8.0_45\jre\lib\charsets.jar;D:\Java\jdk1.8.0_45\jre\lib\deploy.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_45\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_45\jre\lib\javaws.jar;D:\Java\jdk1.8.0_45\jre\lib\jce.jar;D:\Java\jdk1.8.0_45\jre\lib\jfr.jar;D:\Java\jdk1.8.0_45\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_45\jre\lib\jsse.jar;D:\Java\jdk1.8.0_45\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_45\jre\lib\plugin.jar;D:\Java\jdk1.8.0_45\jre\lib\resources.jar;D:\Java\jdk1.8.0_45\jre\lib\rt.jar;E:\workspace\webmagic\webmagic-samples\target\classes;E:\workspace\webmagic\webmagic-core\target\classes;E:\.m2\repository\org\apache\httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar;E:\.m2\repository\org\apache\httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar;E:\.m2\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;E:\.m2\repository\commons-codec\commons-codec\1.6\commons-codec-1.6.jar;E:\.m2\repository\com\google\guava\guava\15.0\guava-15.0.jar;E:\.m2\repository\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;E:\.m2\repository\us\codecraft\xsoup\0.3.1\xsoup-0.3.1.jar;E:\.m2\repository\org\slf4j\slf4j-api\1.7.6\slf4j-api-1.7.6.jar;E:\.m2\repository\org\slf4j\slf4j-log4j12\1.7.6\slf4j-log4j12-1.7.6.jar;E:\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;E:\.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;E:\.m2\repository\org\jsoup\jsoup\1.8.3\jsoup-1.8.3.jar;E:\.m2\repository\commons-io\commons-io\1.3.2\commons-io-1.3.2.jar;E:\.m2\repository\com\jayway\jsonpath\json-path\0.8.1\json-path-0.8.1.jar;E:\.m2\repository\net\minidev\json-smart\1.1.1\json-smart-1.1.1.jar;E:\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;E:\.m2\repository\com\alibaba\fastjson\1.1.37\fastjson-1.1.37.jar;E:\workspace\webmagic\webmagic-extension\target\classes;E:\.m2\repository\redis\clients\jedis\2.0.0\jedis-2.0.0.jar;E:\.m2\repository\commons-pool\commons-pool\1.5.5\commons-pool-1.5.5.jar;D:\JetBrains\IntelliJ IDEA 15.0\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain us.codecraft.webmagic.CSDNJavaWebDevelopProcessor
16-05-23 09:48:32,245 INFO  us.codecraft.webmagic.Spider(Spider.java:307) ## Spider bbs.csdn.net started!
16-05-23 09:48:32,297 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop
get page: http://bbs.csdn.net/forums/Java_WebDevelop
title:	[热烈祝贺CSDN社区大联欢上海站圆满结束, 【新手提问导读】提问的艺术, sturts2 s标签的问题 大神快来, 大神们,一个jsp问题求助,两个字符串对比,不同的部分用红色显示,怎么实现呢, JAVA 网站服务器开发, 将oracle语句改为mysql 急用,大神们帮忙吧!, 想知道报这个错的原因是什么..., 既然mybtis更换数据库sql语句要变,为啥还有那么多公司用mybatis?, 关于页面答题分数总结的问题, Dbutils.QueryRunner的继承问题, 如何用java获得当前网页的url呢, s2sh购物网站的版本控制version,遇到update就出错, SSH注解整合问题, myBatis如何通过@Autowired方式注入多数据源, 刚学easyui,使用datagrid数据不显示,页面数据空白,但记录数对的, myeclipse项目, 读取大量数据文件更新到数据库。, 关于表单提交后跟ajax请求, java web上传文件功能的问题, solr高亮问题, java web上传文件到项目里自动刷新项目后才能读取到, 求教一个手机网站开发问题, 用MyEclipse做图书管理系统出现HTTP Status 500 - , 新人请教个jsp传值给servlet的问题, 请大家帮帮我,谢谢,耽误你们点时间,帮我指导指导,我做了2天都没有做出来,明天就要交作业了,请大家帮帮我。 , 请教hibernate排序问题, java 权限管理, 如何实现在jsp页面中选择txt文件,点击下载时进行下载, 帮忙注释下面代码,谢谢, HIBERNATE HQL查询问题请教, 第一次发帖,求各位大神帮忙解决个tomcat问题。, 大家帮忙看下写的工具类有没有问题,或者能不能改善,多谢?, 新手跪求大神帮忙啊!!, 能不能读取struts2标签获得的值,然后写入数据库?, Selenium 测试用例异常,求大神指点, hibernate无法进行查询更新操作是为什么, axis2客户端程序接收不到cxf服务端发来的报文, mvc+spring+hibernate在tomcat启动时报错,求大神。, myeclipse 安装问题, mybatis入门helloworld项目,出现异常。, jquery Json解析, 求json大神帮我看看这个格式的json如何解析, 求助:jsp+easyUI保存多个同类型model, 关于PWC6033: Unable to compile class for JSP问题的求助, 关于在同一个页面。点击查询按钮,下面会出现表格, tomcat https 单向认证配置, ssh整合+websocket报错org.springframework.beans., jsp页面传值,把查询出来的表格选择数据传到添加表单, iframe三级嵌套相关问题, ssh框架,能上传视频文件吗?, 将一个类路径放到classpath中,jsp文件编译时找不到该类,但普通java程序却可以, Tomcat开启了SSL启动报错误 Keystore was tampered with, or password was incorrect]
16-05-23 09:48:35,258 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop?page=2
16-05-23 09:48:35,258 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop?page=4
16-05-23 09:48:35,259 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop?page=5
16-05-23 09:48:35,258 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop?page=3
16-05-23 09:48:35,258 INFO  us.codecraft.webmagic.downloader.HttpClientDownloader(HttpClientDownloader.java:87) ## downloading page http://bbs.csdn.net/forums/Java_WebDevelop?page=6
get page: http://bbs.csdn.net/forums/Java_WebDevelop?page=3
title:	[button点击事件,怎么做?急!!, 谁有java实现的邮件的接收与发送系统,可以给一下源代码吗, 判断json 是否有重复数据, 急!!新手求助, MyEclipse导入maven项目,包名多了main.java, ssh项目,求帮忙!!, 请问如何设置SVN的权限, 腾讯视频 根据腾讯视频的vid获取视频信息, 求教activiti关于普通表单的理解~, mmGrid提交数据到struts action, 菜鸟求助!对接多个银行这样设计合不合理呢?, 这是什么错??Resource Path Location Type , 一台服务器请求,另一台服务器中直接重定向,请求的服务器会重定向新的页面吗?, java jsoup 爬虫爬asp.net网站遇到_doPostBack不能获取翻页数据, 前台通过ajax传空的字符串到后台,但是springmvc却变成了null,报空指针异常, 新手求助,急!!, tomcat7在eclipse中启动maven项目后不能访问, 一个高深莫测的面试题, 请问这是什么路径"sysmng.logon.do?userID=", spring mvc 异常处理 HandlerExceptionResolver 不能返回到视图, echarts动态设置X轴的值时,始终无法显示相关值, .jsp, spring mvc 表单类, DriverManager.getConnection()返回值类型问题, 阿里大鱼API文档实现, Myeclipse导入工程出错, spring aop 做日志记录功能, 求大神, 通过网页访问.jsp出现HTTP Status 500 - Unable to compile class for JSP 新手比较急 , spring mvc ajax异步请求找不到路径, MyBatis关联映射,关联字段的展示问题, 求助,ssh整合后,tomcat启动listener失败, 如何组装微信中MediaId的语音消息?, 单位排班维护界面怎么开发,急 急 急, 请问高手,关于xstream插件的问题, JSP中if-else-if语句多的时候,运行就会报错!, myeclipse导入web项目出错, 求助:怎么将一个有web项目目录结构的java项目部署到tomcat中访问?, 一台机器上面部署两个Tomcat没有成功, JAVA FTP下载文件前如何选择最新版本文件下载, service层是多余的吗?求各位水友指点迷津, Tomcat在windows管理的服务中启动,但其他终端不能访问, 安装Tomcat出现问题,求大神解救!, JDBC保存数据报错, java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - c, 求推荐一个开源适合新手学习的基于java的cms系统,  新手求各位大佬 pdfbox 将pdf首页转为图片出错, Struts框架启动报错,新手求教,查了很久没搞定。, oracle12cORA-28040: No matching authentication protocol错误, 求解]
get page: http://bbs.csdn.net/forums/Java_WebDevelop?page=4
title:	[各位大神,apache-tomcat-6.0.39重新部署总是出现这个问题怎么解决啊?, POI读取docx格式文档报错:Package should contain a content type part [M1.13], 高手看一下String转byte[] 数据丢失, spring配置文件从web移到kernel包之后,启动报错找不到配置文件, springmvc报错, 将网页上面的表以excel形式导出时候的数字问题, 怎么让一个jsp网站的java程序时刻运行, org.apache.jasper.JasperException: An exception occurred processing JSP page , struts2 拦截器怎么修改返回的jsp路径, spring hibernate 如何捕获DataIntegrityViolationException, dom4j asXML 后空元素自闭和如何解决, There is no Action mapped for namespace /customer and action name toCustomerList, HTTP Strtus 500错误怎么解决, 遇到问题,解决两天了,不知道哪里错了,应该是外键和映射的问题,但是改不出来,,求帮助, 不同系统之间的信息推送, Base64编码后再解码汉字变成乱码, 项目部署到weblogic出错, 已整理了一个中奖概率算法,请问是否有更好的?, 求助,获取上传本地图片的宽高, 请教关于加大文本框字符显示间隔的方法, 求助!spring实现同一个账号,重复登陆,后一个会把前一个挤掉,删除session的问题,附我的源代码!, 一套程序根据需求不同切换不同功能, spring+mybatis的问题,关于SqlSessionTemplate的, java 注解, java.lang.NoSuchMethodError: java/util/Collections.emptyIterator()Ljava/util/Ite, srping用hibernateTemplate提交数据问题, MYSQL提交数据后,等一会才能生效,是怎么回事呢?, 求一个完整的java web 学习视频!, 用java如何在获得jquery展现的数据以及及时更新问题, 怎么使用jQuery获取servlet的值?, 如何检测和修复IE控件、根证书、IE设置等等, 初学, Hibernate, 报错,找不到域namingStrategy, jdbc连接Oracle数据库,结果是数据库驱动有问题, MyEclipse2014找不到Install JPA Facet选项, springMVC整合Hibernate开发,properties文件的键值对莫名其妙变成其他的值, svg2gfx.xsl报错Xpath is invalid, tomcat部署,axis2报错, dtd 对xml约束问题,虽然知道,但是有个细节不是很懂啊, 求解点击一个”添加“按钮出现一个文本框然后输入信息再点一次按钮能在当前jsp页面添加一条新的记录(删除按钮直接删除这一行记录)怎么写, 如何对list进行分页?, Java程序员的瓶颈,求帮助。, springmvc中的使用jquery的$("#name").val()获取不到值输入框的值, spring3.2+quartz2.21,怎么实现动态配置cronExpression?, mysql中的my.ini和my-default.ini中文无法显示或者操作, 自学小白求助!!!, Hibernate 5.1.0 final SchemaExport求助, 请问怎样关联struts, REDIS提问,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值