美文网首页java学习之路
java——使用jsoup解析HTML

java——使用jsoup解析HTML

作者: 唯有努力不欺人丶 | 来源:发表于2020-06-03 17:46 被阅读0次

额,随着小项目做的越来越多,技术啥的不见得涨多少,但是各种稀奇古怪的玩意儿肯定越接触越多。
本来一个好好的网站项目,突然被告知有一些要用到爬虫的东西。离交任务不到一周突然接到这个通知我简直???
不过一细问才知道并没有那么难,也是领导一知半解了吓唬我,其实就是根据某东的sku直接获取商品的主图和价格,商品名,商家名等信息。
这里简单说一下,京东中商品的sku就是编号,下面附个图解释:


红色框起来的编号就是sku
红色框起来的编号是sku

注意一下,哪怕是一家店铺,一个商品的多种不同选择,也是不同的sku。简单来说一个sku肯定对应唯一的一个商品和价格。
在app上看的不清楚,但是在网站上很容易能看出直接

 "https://item.jd.com/"+skuId+".html"

上面的网址就可以打开某一个sku的详情页面。如下这几个都是可以直接打开的:
https://item.jd.com/31014227524.html
https://item.jd.com/32399509894.html
https://item.jd.com/31014227526.html

回到正题,今天的任务就是知道商品的sku同时获取商品的详细信息等。然后其实在没用jsoup之前,我也尝试用一种很无脑的方式实现了的。如下:

粗暴的实现代码截图
其实就是一个简单的http请求获取页面。然后根据页面的特性去模糊匹配。但是具体的查询方法比较low,而且遇到特殊的商品可能还查询出来的不对。可能再完善完善细节就实现了,但是我已经没耐心了。
到这才说到正题:jsoup解析器
我感觉单纯的jsoup是和任何爬虫无关的,它本身只是一个html的解析器。提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出数据。
然后下面是使用方法:
  1. 导包
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.12.1</version>
        </dependency>
  1. 使用
    其实看我上面的代码,就是自己写请求去获取页面,然后返回html页面,虽说代码不多但是也挺麻烦的,而jsoup支持直接从url中获取内容(深感后悔自己之前浪费好多时间),简单一句代码:
Document document = Jsoup.connect("https://item.jd.com/"+skuId+".html").get();

这一句话,document获取的就是这个url的html。等同于我上文中的result。然后下一步就是在这个document树上获取自己想获取的信息。
好的,我被现实痛击了!这个京东爬过来的源码中没有价格。。
脑壳痛,据多方研究讨论,这个价格应该是京东特意做成这样的,目的就是为了反爬。。但是除了价格别的都可以。比如商品标题,比如图片啥的。
经过和领导的争论,这里领导说可以不要价格了。然后剩下的就比较简单。我反正是用了很low的一种形式实现了。先附上实现代码。以后有改动了会跟着更改本文的:

    public R getSku(String skuId) {
        try {
            Document document = Jsoup.connect("https://item.jd.com/"+skuId+".html").get();
            Elements elements = document.getElementById("choose-attr-1").getElementsByClass("selected");
            String string = elements.toString();
            string = string.substring(string.indexOf("//")+2,string.indexOf(".jpg"))+".jpg";
            String title = document.title();
            return R.ok().put("img", string).put("title", title);
        } catch (Exception e) {
            return R.error("查询sku信息失败,详情请联系管理员!");
        }
    }

这篇笔记就到这里,如果稍微帮到你了记得点个喜欢点个关注,也祝大家工作顺顺利利!!另外java技术交流群130031711,群里好多学习资料啥的,欢迎各位萌新大佬踊跃加入!

相关文章

  • HTML&XML解析器--Jsoup

    HTML&XML解析器 一.Jsoup概述 Jsoup简介jsoup是一款Java的HTML解析器,可直接解析某个...

  • Jsoup 学习

    了解Jsoup Jsoup使用一个解析HTML文件的Java包。利用Jsoup,可以实现以下内容的抽取 文本抽取 ...

  • Java爬虫之Jsoup 基础语法

    Jsoup介绍: Jsoup 是一个 Java 的开源HTML解析器,可直接解析某个URL地址、HTML文本内容。...

  • Jsoup实战_1_选择器

    Jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了...

  • Android 使用 jsoup 解析 html

    一、什么是jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它...

  • 没壁纸用了?用Jsoup写一个图片爬虫吧!

    1. Jsoup Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供...

  • 【Jsoup】HTML解析器,轻松获取网页内容

    Jsoup简介 jsoup 是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一...

  • 爬虫之Jsoup

    Jsoup简介jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一...

  • jsoup完整教程

    jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套...

  • java爬虫基础--jsoup

    java爬虫框架---jsoup 在实际的开发过程中,jsoup仅仅作为对html界面解析的工具 一、解析URL ...

网友评论

    本文标题:java——使用jsoup解析HTML

    本文链接:https://www.haomeiwen.com/subject/rnsvzhtx.html