Jsoup爬虫入门实战

数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫!

爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!)

我们经常需要分析HTML网页,以从中提取感兴趣的信息。

开始,一个简单获取京东商品的小Demo。

eg:比如我搜索java关键字 https://search.jd.com/Search?keyword=java&enc=utf-8&wq=java&pvid=71ec4d01ed1f428b8f3fc2c53a53208d

【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
怎么获取呢这些数据信息呢?

jsoup包!

JsoupJsoup是一款Java的HTML解析器,可直接解析某个URL地址和HTML文本内容。它提供了一套非常省力的API,可通过DOM、CSS以及类似于jQuery的操作方法来取出和操作数据。网址:https://jsoup.org。

1、导入依赖

   <!--解析网页 jsoup-->
<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.2</version>
 </dependency>

jsoup是解析网页的。

2、分析网页

【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

分析京东网页可得 物品在id为"J_goodsList"的div的ul的li里,那就搞过来吧。

3、代码实现

public class JsoupHtmlParseJd {
    public static void main(String[] args) throws IOException {
        new JsoupHtmlParseJd().parseJD("java").forEach(System.out::println);
    }

    public List<Product> parseJD(String keyword) throws IOException {
        //获得请求 eg:https://search.jd.com/Search?keyword=java
        String url = "https://search.jd.com/Search?keyword=" + keyword;
        //中文? 中文在url后面拼上&enc=utf-8
        url = url + "&enc=utf-8";
        //解析网页。(Jsoup返回Document就是浏览器Document对象)
        Document document = Jsoup.parse(new URL(url), 30000);
        Element element = document.getElementById("J_goodsList");
        //分析京东网页可得 id为"J_goodsList"的div的ul的li 数据在li里

        //获取所有的li元素, 那才是真的数据
        Elements elements = element.getElementsByTag("li");
        // 获取元素中的内容, 这里的el 就是每一个li标签了!
        // 封装个对象 来存储爬的数据
        ArrayList<Product> goodsList = new ArrayList<>();
        for (Element el : elements) {
            //获取第一个图片 src属性   图片呢   为什么获取不到呢
            //原来是 source-data-lazy-img   性能
            //String img = el.getElementsByTag("img").eq(0).attr("src");
            String img = el.getElementsByTag("img").eq(0).attr("source-data-lazy-img");
            String price = el.getElementsByClass("p-price").eq(0).text();
            String title = el.getElementsByClass("p-name").eq(0).text();
            String shop = el.getElementsByClass("p-shop").eq(0).text();
//            System.out.println("=========================");
//            System.out.println("标题:" + title);
//            System.out.println("图片url:" + img);
//            System.out.println("店铺:" + shop);
//            System.out.println("价格:" + price);
            Product product = new Product();
            product.setImg(img);
            product.setPrice(price);
            product.setTitle(title);
            product.setShop(shop);
            goodsList.add(product);
        }
        return goodsList;
    }

}

@Data
//有参数
//无参数构造
@AllArgsConstructor
@NoArgsConstructor
public class Product {
    private String title;
    private String img;
    private String price;
    private String shop;
}

4、运行结果

D:\Environments\jdk-8u241\bin\java.exe 。。。
Product(title=Java从入门到项目实战(全程视频版) 65小时全程视频教学,著名软件技术讲师20年Java经验集成之作,配套源代码、课件、自测题、面试题,赠Java工程师学习路线、职业规划、自我修养视频课, img=//img12.360buyimg.com/n7/jfs/t1/37162/11/8870/130954/5ccfe770E9ce31151/74a5a5dcd83ecc09.jpg, price=¥84.80¥34.90, shop=中国水利水电出版社)
Product(title=Offer来了:Java面试核心知识点精讲(原理篇) 精讲Java面试必需的JVM原理、Java基础、并发编程、数据结构和算法、网络与负载均衡、数据库与分布式事务、分布式缓存原理及应用、设计模式原理及实现, img=//img13.360buyimg.com/n7/jfs/t1/45591/11/14475/114999/5db2539aE78c5a65e/395212e63f5a93c7.jpg, price=¥88.10¥84.60, shop=电子工业出版社)
Product(title=码出高效:Java开发手册 中国人自己原创的Java编程规范\从入门到大师的体系化开发指南\助你高效码代码迅速成长, img=//img13.360buyimg.com/n7/jfs/t30436/35/1494683199/69182/11fe5fb2/5ce20930N6d70a9f6.jpg, price=¥98.00, shop=电子工业出版社)
Product(title=阿里巴巴Java开发手册 中国人自己原创的Java编程规约;阿里经济体全球技术开发准则; 帮助工程师脱离烦琐,重燃技术激情; 降低企业技术沟通成本,提高团队协同研发效能, img=//img11.360buyimg.com/n7/jfs/t15166/324/2041049880/267178/69de6aaa/5a693fa1Nf13ae221.png, price=¥27.60, shop=电子工业出版社)
Product(title=O'Reilly:Head First Java(中文版 第2版 涵盖Java5.0) 10年畅销经典,累计印刷20多次,畅销10万余册,计算机图书十大好书之一, img=//img10.360buyimg.com/n7/jfs/t2680/274/3707696254/120035/6281369a/57986bbdN27e0e4fe.jpg, price=¥72.70, shop=中国电力出版社)
Product(title=Java 8实战 Java 8终 极指南 通过新的Stream API及Lambda表达式等示例全面讲解Java 8新特性 并为Java程序员开启函数式编程的大门, img=//img10.360buyimg.com/n7/jfs/t2395/169/2883784014/95060/83d0b6ec/571e49e0N5a93c2ee.jpg, price=¥66.20, shop=人民邮电出版社)
Product(title=Java实战 第2版 高分经典《Java8实战》全新改版升级,通过示例全面讲解Java8、9、10新特性,让你尽快掌握流应用程序接口等Java编程利器,使你的代码更加优雅, img=//img10.360buyimg.com/n7/jfs/t1/58652/2/12362/129522/5de751dcE494b5dfa/d00e13726d206e88.jpg, price=¥99.70, shop=人民邮电出版社)
Product(title=Java设计模式及实践 精选Java实用设计模式,帮你有效解决开发应用程序过程中的常见问题,轻松应对各种规模项目的扩展和维护, img=//img11.360buyimg.com/n7/jfs/t1/33309/28/15393/98266/5d1eedbaE4ce86199/2cddbf8b81dbcf85.jpg, price=¥65.20, shop=机械工业出版社)
Product(title=深入理解Spring MVC源代码:从原理分析到实战应用 Java架构师必备,Web开发人员案头手册!精通SpringMVC源代码,深入理解框架开发编程思想和设计模式,从框架使用者到开发者,带你实现认知升级和华丽转身, img=//img14.360buyimg.com/n7/jfs/t1/79815/34/13046/231814/5db28fedE9959cd85/a5b85d0b9944f6c7.jpg, price=¥106.90, shop=中国水利水电出版社)
Product(title=Java开发从入门到精通 第2版 基于Java 11版本讲解, img=//img11.360buyimg.com/n7/jfs/t1/102093/26/3303/117819/5ddf352fE39f3f8d8/b1fe89e66574184e.jpg, price=¥107.90, shop=人民邮电出版社)
Product(title=深入浅出Node.js 深入讲解Node的图书 讲述基于JavaScript运行时所建立的平台原理 与mongodb结合操作的具体案例 响应式设计别具匠心, img=//img13.360buyimg.com/n7/jfs/t6094/107/710811867/382815/4d54717/592bf165N755a88f0.jpg, price=¥54.50, shop=人民邮电出版社)
Product(title=Java性能权威指南 深入理解Java平台性能和语言程序设计开发实战 疯狂理解Java核心技术与编程思想的讲义 让你的程序如虎添翼, img=//img13.360buyimg.com/n7/jfs/t2674/39/632591997/326443/6d5dd326/571ed7d2Nfb8d8752.jpg, price=¥66.20, shop=人民邮电出版社)
Product(title=Java架构师指南 知名Java专家多年经验总结 介绍从程序员进阶到架构师需要具备的技能的完整教程, img=//img11.360buyimg.com/n7/jfs/t20167/176/378379777/135717/5f59bebd/5b0cc13dN438d2bfc.jpg, price=¥88.10, shop=人民邮电出版社)
Product(title=图解Java多线程设计模式 Java程序员bi读 精选12种设计模式 轻松学习多线程编程, img=//img12.360buyimg.com/n7/jfs/t5797/85/9205318505/62242/28fec040/599a668aN07d69866.jpg, price=¥74.50, shop=人民邮电出版社)
Product(title=Java网络编程(第四版) 从事Java网络程序长达20年的资深作者,Java开发网络开发实用指南。, img=//img11.360buyimg.com/n7/jfs/t2470/89/1665313191/110499/8ccbd398/566fa288Nd48b1fb0.jpg, price=¥71.80, shop=中国电力出版社)
Product(title=JavaScript DOM编程艺术(第2版) 畅销书升级版 详解开发Web应用的基石 W3C的DOM标准 国际知名web设计师 倡导Web标准的领军人物执笔 揭示了前端开发的真谛, img=//img13.360buyimg.com/n7/jfs/t5914/15/800105189/215959/973eea1f/592bf164N56d3e3db.jpg, price=¥41.00, shop=人民邮电出版社)
Product(title=数据结构与算法Java语言描述 本书介绍了怎样使用数据结构实现有效的算法,分析和测试了算法的性能,并学习如何从零开始建立一个有趣的搜索引擎。, img=//img12.360buyimg.com/n7/jfs/t24976/251/1905782409/237076/6ea25334/5bbef5e8N84c72cb7.jpg, price=¥35.00, shop=中国电力出版社)
Product(title=Netty实战 “Netty之父”Trustin Lee作序推荐!含有大量真实的应用和代码示例,附带行业一线公司的案例研究,极实用的Netty技术书, img=//img10.360buyimg.com/n7/jfs/t5227/173/1793618117/453810/1253bd90/59141c1dN7a93c127.jpg, price=¥68.30, shop=人民邮电出版社)
Product(title=明解Java 畅销书《明解C语言》作者人气新作!更适合入门的Java编程书!, img=//img11.360buyimg.com/n7/jfs/t19468/239/87711098/171964/7530d0cd/5a5c6e78Ne4d03861.jpg, price=¥82.90, shop=人民邮电出版社)
Product(title=Java性能优化权威指南 Java性能优化圣经!Java之父重磅推荐!, img=//img10.360buyimg.com/n7/g13/M09/15/1E/rBEhUlMEatcIAAAAAAVMw6OwOPYAAIwSwIOpu0ABUzb978.jpg, price=¥91.30, shop=人民邮电出版社)
Product(title=Java核心技术系列:Java多线程编程核心技术 Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著【本书已更新至第2版】, img=//img14.360buyimg.com/n7/jfs/t1408/343/298344088/165083/8c0b31fa/55726488N4453a762.jpg, price=¥56.90, shop=机械工业出版社)
Product(title=Java从入门到精通 精粹版 Java程序设计从入门到精通 详解Java 9编程思想和核心技术 10万读者认可的编程图书精粹 零基础自学编程的入门图书 配同步视频教程和源代码 海量资源免费赠送, img=//img12.360buyimg.com/n7/jfs/t26734/256/82968212/182207/18ff232c/5b842276N17fb34b2.jpg, price=¥79.00, shop=人民邮电出版社)
Product(title=图解设计模式 Java程序员必读 用Java语言讲解GoF的23种设计模式 194张图表 57张UML类图 通俗易懂 专业实用, img=//img10.360buyimg.com/n7/jfs/t3244/19/4701748027/371568/973000db/585358ebN2d6b6a66.jpg, price=¥66.20, shop=人民邮电出版社)
Product(title=Java多线程与Socket:实战微服务框架 Java,多线程,Socket,微服务, img=//img12.360buyimg.com/n7/jfs/t1/20577/8/12091/276090/5c948e4aE5c9ac9e0/0f37a2243748b9e6.jpg, price=¥95.00, shop=电子工业出版社)
Product(title=Java图像处理:基于OpenCV与JVM 本书提供了常见图像处理问题的Java解决方案、学习实践案例,以及有关使用OpenCV进行图像处理的各种知识。, img=//img13.360buyimg.com/n7/jfs/t1/36863/12/9014/134383/5cce4a10E6da7596c/6efe62222097d1b1.jpg, price=¥81.70, shop=机械工业出版社)
Product(title=Java多线程编程实战指南:设计模式篇(第2版) 本书用Java诠释多线程编程的“三十六计”——多线程设计模式,对每个设计模式的讲解都附有实战案例和源代码解析。, img=//img10.360buyimg.com/n7/jfs/t1/99034/37/17506/143368/5e86ed7aE87dceb91/7d386344d02b743a.jpg, price=¥68.30¥65.60, shop=电子工业出版社)
Product(title=Java轻松学 Java编程从入门到精通 零基础学Java教程 通过开发实际应用和游戏快速上手, img=//img12.360buyimg.com/n7/jfs/t19297/333/2459589723/194078/b7a07be4/5af31c52N2e882cbb.jpg, price=¥49.40, shop=人民邮电出版社)
Product(title=Kotlin实战 首著席卷而来 Android界Swift Java全兼容 谷歌官方头牌 移动开发巨变, img=//img14.360buyimg.com/n7/jfs/t6061/329/6214493869/204427/b10fb30a/59715eb7N3e27da7c.jpg, price=¥70.20, shop=电子工业出版社)
Product(title=漫画面向对象编程 Java语言版 面向对象编程的启蒙读物 以漫画形式展示面向对象编程知识 Java编程思想 学C编程也可以卡通一点姊妹篇, img=//img11.360buyimg.com/n7/jfs/t18859/69/2592777548/1184436/5d575859/5afdb77aN554fdc7c.jpg, price=¥44.50, shop=人民邮电出版社)
Product(title=Java 8入门与实践(微课视频版) 128集同步视频讲解+中小实例+综合样例+源码文件+PPT教学课件+网络教学平台互动学习,另有配套实践实验指导及习题解析,推荐一并购买。, img=//img10.360buyimg.com/n7/jfs/t1/43911/36/3741/215912/5ccfdf5fE0be19d91/4203cdea7b695fbb.jpg, price=¥88.90, shop=中国水利水电出版社)

Process finished with exit code 0