您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

Java爬虫可以非常溜

来源:网络整理 浏览:361次 时间:2023-03-31

xxl-crawler是 许雪里 大佬开源的一个java爬虫,熟悉java语言的用起来可以非常顺手。

代码仓库:

https://github.com/xuxueli/xxl-crawler

官网文档:

https://www.xuxueli.com/xxl-crawler/#爬虫示例参考

0x01:新建工程,并在pom.xml文件引入

<dependency>    <groupId>com.xuxueli</groupId>    <artifactId>xxl-crawler</artifactId>    <version>1.2.2</version></dependency><dependency>    <groupId>org.jsoup</groupId>    <artifactId>jsoup</artifactId>    <version>1.11.2</version></dependency>


0x02:编写页面数据对象

在此推荐两款工具,可以直观迅速的获取页面元素的Jquery cssQuery表达式。

  • Chrome DevTools:首先定位元素位置,然后从Element选中选中元素,点击右键选择“Copy + Copy selector”即可;

Chrome DevTools使用如图



  • Jquery Selector Helper(Chrome插件):首先定位元素位置,然后从Element右侧打开Selector界面,然后定位元素即可;
package com.spider.page.vo;import com.xuxueli.crawler.annotation.PageFieldSelect;import com.xuxueli.crawler.annotation.PageSelect;import com.xuxueli.crawler.conf.XxlCrawlerConf.SelectType;@PageSelect(cssQuery = "body > div.container > div > div > table > tbody > tr")public class GzGemasComCnPageMainVo {    @PageFieldSelect(cssQuery = "td:nth-child(1)")    private String code;    @PageFieldSelect(cssQuery = "td:nth-child(2)")    private String title;    @PageFieldSelect(cssQuery = "td:nth-child(3)")    private String status;    @PageFieldSelect(cssQuery = "td:nth-child(4)")    private String date;    @PageFieldSelect(cssQuery = "td:nth-child(2) > a", selectType=SelectType.ATTR, selectVal="onclick")    private String url;    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getStatus() {        return status;    }    public void setStatus(String status) {        this.status = status;    }    public String getDate() {        return date;    }    public void setDate(String date) {        this.date = date;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }}


0x03:创建爬虫爬取数据

XxlCrawler crawler = new XxlCrawler.Builder()                .setUrls("http://gz.gemas.com.cn/portal/article/proList.shtml?proType=guquan&typeGz=G3T3&proSource=&pageIndex=1")                .setAllowSpread(false) //允许扩散爬取,将会以现有URL为起点扩散爬取整站                .setThreadCount(1)                .setPageParser(new PageParser<GzGemasComCnPageMainVo>() {                    @Override                    public void parse(Document html, Element pageVoElement, GzGemasComCnPageMainVo gzGemasComCnPageVo) {                        // 解析封装 PageVo 对象                        String pageUrl = html.baseUri();                        logger.info("pageUrl: " + pageUrl);                        logger.info("Code: " + gzGemasComCnPageVo.getCode() + ", Title: " + gzGemasComCnPageVo.getTitle()                             + ", sdate: " + gzGemasComCnPageVo.getDate() + ", url: " + gzGemasComCnPageVo.getUrl()                            + ", status: " + gzGemasComCnPageVo.getStatus());                    }                })                .build();crawler.start(true);

关键步骤视频说明:





原作者:Java乐园
原文链接:Java爬虫可以非常溜
原出处:公众号
侵删


推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com