使用Jsoup完成网页爬虫

  • 网络爬虫
    含义就是自动抓取互联网信息的程序,
    jsoup可以通过url获取到html源文件,源文件中包含着网站数据,我们可以解析html源文件的数据来获取需要的信息,

  • 开发步骤
    1 引入jar包
    2 使用jsonp获取网页html源文件,转化成Document对象
    3 通过Document对象,获取需要的Element对象,
    4 获取Element对象中的数据,
    5 设置循坏自动爬取

public class CrawlerDemo {
    //爬虫
    public static void main(String[] args) {
        //使用jsoup获取网页中的html源文件,转化成Document对象,
        try {
            Document parse = Jsoup.parse(new URL("https://pic.netbian.com/"), 5000);
            System.out.println(parse); //输出的源文件数据信息
            //通过document对象来获取需要element对象
            Elements img = parse.getElementsByAttributeValue("alt", "天空小姐姐 黑色唯美裙子 厚涂画风 4k动漫壁纸");
            Elements title = parse.getElementsByAttributeValue("title", "4k壁纸");
            Elements select = parse.select(".w");
            System.out.println("++++++++++++++++++++");
            System.out.println(img);
            System.out.println(title);
            System.out.println(select);
            //获取Element对象中的数据
            String href = img.get(0).attr("src");
            String href1 = title.get(1).attr("href");
            String text = select.text();
            System.out.println("+++++++++++++++++++++++++++");
            System.out.println("href"+href);
            System.out.println("href1"+href1);
            System.out.println("text"+text);
            System.out.println(href1+href);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
  • 认识Jsoup
    是用来解析html页面的工具包,把页面解析出来封装成一个document对象,同时也可以解析xml配置文件,
//第一步先了解parse()方法 获取document对象
try {
            //解析html页面 parse方法是解析文件或是路径
            String path = "com/bjsxt/xml/haha.xml";
            Jsoup.parse(new File(path), "utf-8");//给定本地文件的路径和字符集 返回document对象
            Jsoup.parse("html");//给定一个页面解析成document对象  返回document对象
            Jsoup.parse(new URL("url"),1000);//给定时间内解析url网页文件  返回document对象
        } catch (IOException e) {
            e.printStackTrace();
        }

//第二步 根据parse方法返回的documnet对象来获取对应的元素标签 Elements对象

Elements a = parse.getElementsByTag("a"); //根据选择标签名来获取对应的标签 
Elements img = parse.getElementsByAttributeValue("alt", "天空小姐姐 黑色唯美裙子 厚涂画风 4k动漫壁纸");
Elements title = parse.getElementsByAttributeValue("title", "4k壁纸"); //根据元素标签的属性值来获取对应的标签
Elements select = parse.select(".w"); //根据选择器选择元素标签
parse.getElementById(Sting id) //根据元素标签中的id属性来获取对应的标签

// 根据获取到的元素标签 来获取标签中的内容,属性值
String href = img.get(0).attr("src"); //获取到标签中的src属性值
String href1 = title.get(1).attr("href");//获取到的是标签中的href属性值
String text = select.text();//获取到的是标签中的文本内容 
select.html();//获取元素包含带标签的文本,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebCollector是一个无须配置、便于二次开发的Java爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。 WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了Jsoup,可进行精准的网页解析。2.x版本中集成了selenium,可以处理JavaScript生成的数据。 WebCollector特性: 1、自定义遍历策略,可完成更为复杂的遍历业务,例如分页、AJAX 2、可以为每个 URL 设置附加信息(MetaData),利用附加信息可以完成很多复杂业务,例如深度获取、锚文本获取、引用页面获取、POST 参数传递、增量更新等。 3、使用插件机制,用户可定制自己的Http请求、过滤器、执行器等插件。 4、内置一套基于内存的插件(RamCrawler),不依赖文件系统或数据库,适合一次性爬取,例如实时爬取搜索引擎。 5、内置一套基于 Berkeley DB(BreadthCrawler)的插件:适合处理长期和大量级的任务,并具有断点爬取功能,不会因为宕机、关闭导致数据丢失。 6、集成 selenium,可以对 JavaScript 生成信息进行抽取 7、可轻松自定义 http 请求,并内置多代理随机切换功能。 可通过定义 http 请求实现模拟登录。 8、使用 slf4j 作为日志门面,可对接多种日志 9、使用类似Hadoop的Configuration机制,可为每个爬虫定制配置信息。
一个gecco爬虫框架,简单易用,使用jquery风格的选择器抽取元素 支持爬取规则的动态配置和加载 支持页面中的异步ajax请求 支持页面中的javascript变量抽取 利用Redis实现分布式抓取,参考gecco-redis 支持结合Spring开发业务逻辑,参考gecco-spring 支持htmlunit扩展,参考gecco-htmlunit 支持插件扩展机制 支持下载时UserAgent随机选取 支持下载代理服务器随机选取 Gecco是一款用java语言开发的轻量化的易用的网络爬虫,不同于Nutch这样的面向搜索引擎的通用爬虫,Gecco是面向主题的爬虫。 通用爬虫一般关注三个主要的问题:下载、排序、索引。 主题爬虫一般关注的是:下载、内容抽取、灵活的业务逻辑处理。 Gecco的目标是提供一个完善的 » 二、一分钟你就可以写一个简单爬虫 示例代码 这里用抓取gecco这个项目的首页为例。我们希望得到项目的作者名称,项目名称,项目的star和fork数量,以及项目的介绍。如果你稍有java基础,会写jquery的css selector我相信下面的代码我不需要解释你也能轻松的看明白。 @Gecco(matc » 三、软件总体结构 基本构件介绍 GeccoEngine GeccoEngine是爬虫引擎,每个爬虫引擎最好是一个独立进程,在分布式爬虫场景下,建议每台爬虫服务器(物理机或者虚机)运行一个GeccoEngine。爬虫引擎包括主要Scheduler、Downloader、Spider、SpiderB » 四、GeccoEngine Gecco如何运行 Gecco的初始化和启动通过GeccoEngine完成,GeccoEngine主要负责初始化配置、开始请求的配置和启动爬虫运行,最基本的启动方法: GeccoEngine.create() .classpath("com.geccocrawler.ge » 五、从下载说起 一、下载引擎 爬虫最基本的能力就是发起http请求,下载网页,gecco默认采用httpclient4作为下载引擎。通过实现Downloader接口可以自定义自己的下载引擎,在启动GeccoEngine时需要设置自己的下载引擎。下面的代码不是使用默认的httpclient作为下载 » 六、抽取页面内容 gecco的内容抽取都是直接映射到java bean的属性中,利用注解可以方便的注入页面中的各种信息包括html页面内容、Ajax请求、javascript变量、request信息等 一、Html页面内容抽取 jsoup语法介绍 Selector选择器概述 tagname: » 七、业务逻辑处理 至此页面内容已经被gecco转换为一个普通的javabean。剩下的工作就是将javabean进一步清洗然后针对特定的业务逻辑进行持久化等处理。 一、实现pipeline接口 gecco采用管道过滤器模式灵活的实现业务逻辑处理,首先实现一个特定的管道过滤器,如: @Pipelin » 八、爬虫的监控 爬虫为什么要监控 gecco是一个十分简单易用的java开源爬虫框架,同时也一个款拥有很好扩展性的框架,目前已经有: 结合spring的插件gecco-spring 结合htmlunit的插件gecco-htmlunit 结合reids的插件gecco-reids 在开发爬虫时, » 九、稳定性测试 最近对开源的java爬虫Gecco做了一个稳定性测试,测试环境:一台爬虫+web应用服务器,一台mongodb服务器。服务器配置很low,两台都是阿里云最低端的主机,1核+512内存。 单线程测试场景 爬虫采用单线程,测试时间3×24小时,测试期间系统无异常,jvm内存稳定。测试 十、Gecco爬虫框架的线程和队列模型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值