Java爬虫Jsoup篇

导航

  • Java爬虫Jsoup篇
    • 一、Jsoup概述
    • 二、Jsoup使用
    • 三、为什么老是被和谐,老子爬个公开的信息怎么了
      • 完整代码:

一、Jsoup概述

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

关键信息:jsoup可以解析html文档

那么,解析html文档和爬虫有什么关系呢?

网页要在浏览器显示,离不开html,要是我们能够解析它的html,那么我们就能获取其中的数据。

二、Jsoup使用

使用jsoup不需要繁琐的配置,直接导包就可以开始干。

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version>
</dependency>

Joup中有很多类和方法,但实际上常用的就几个,我们来敲个代码试试。

package vip.yangsf;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;import java.io.IOException;public class ForBaidu {public static void main(String[] args) throws IOException {Document document = Jsoup.connect("https://www.baidu.com").get();System.out.println(document.getElementsByTag("title"));}
}

然后我们就获得了这个标签,操作和js一毛一样。

三、为什么老是被和谐,老子爬个公开的信息怎么了

我们来做一个爬取商品信息的案例:

  1. 访问它的网址(哎不敢说名字啊被和谐三次了),搜索Java

    会发现地址栏是这样的:

    https://search.jd.com/Search?keyword=java&enc=utf-8&wq=java&pvid=f9e0a8114fdc4692bc75096d4fff6a75

    简单读一读,发现是一个get请求,“ ? ” 后面是参数,那么精简一下:

    https://search.jd.com/Search?keyword=java&enc=utf-8

  2. 得到了url,我们就可以解析它的html,先获得dom:

    Document document = Jsoup.connect("https://search.jd.com/Search?keyword=java&enc=utf-8").get();
    
  3. 按f12观察网页,检查一下商品名在哪个标签里面

    观察发现,在一个id为J_goodsList的div下面的一个类名为p-namediv下,然后我们还可以看出,每一个商品就是一个li。

    于是:

    Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");
    

    获取J_goodsList下的所有li。

  4. 遍历每一个li,获取里面的数据,并输出(例如获取商品名)

    for (Element e : elements) {System.out.println(e.getElementsByClass("p-name").get(0).getElementsByTag("em").text());
    }
    

    同样,我们可以通过同样的方法获取它的价格以及图片地址。

完整代码:

商品类:

package vip.yangsf.pojo;public class Goods {private String img;private String name;private String price;public Goods() {}public Goods(String img, String name, String price) {this.img = img;this.name = name;this.price = price;}public String getImg() {return img;}public void setImg(String img) {this.img = img;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}@Overridepublic String toString() {return "Goods{" +"img='" + img + '\'' +", name='" + name + '\'' +", price='" + price + '\'' +'}';}
}

爬取商品信息:

package vip.yangsf;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import vip.yangsf.pojo.Goods;import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;public class JsoupTest {public static void main(String[] args) throws IOException {// 查询java第二页的商品信息Collection<Goods> goods = paseJD("java", 2);// 输出每一个商品的信息goods.forEach(System.out::println);}// 我们可以让搜索的关键字和页数传进来,更灵活public static Collection<Goods> paseJD(String keyword, int page) throws IOException {// 待会儿每爬到一个商品就把它加进来Collection<Goods> goods = new ArrayList<>();// 把url拼接出来String url = "https://search.jd.com/Search?keyword=" + keyword + "&enc=utf-8&page=" + page;// 拿到DOM就可以开始操作Document document = Jsoup.connect(url).get();String img = null;String name = null;String price = null;Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");for (Element e : elements) {// 这里商品图片是懒加载,直接获取src获取不到img = e.getElementsByTag("img").attr("data-lazy-img");name = e.getElementsByClass("p-name").get(0).getElementsByTag("em").text();price = e.getElementsByClass("p-price").text();goods.add(new Goods(img, name, price));}return goods;}
}

Java爬虫Jsoup篇相关推荐

  1. Java爬虫入门篇---Jsoup工具

    Java爬虫入门篇---Jsoup工具 前言 准备工作 获取文本数据 获取页面中所有的图片 前言 pythoy的scrapy框架是大名鼎鼎,Jsoup则为Java框架的爬虫 准备工作 1.下载jsou ...

  2. java爬虫---Jsoup

    简单易懂的java爬虫-Jsoup 做个简单的Demo,爬取酒店的基本信息,酒店名称.酒店地址.酒店星级.酒店的图片等.这里考虑在哪个网站爬取这些数据呢?第一个想到的就是X程上. Jsoup爬取的是网 ...

  3. java爬虫(jsoup)实现搜狗图片一键下载

    java爬虫(jsoup)实现搜狗图片一键下载 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.no ...

  4. java爬虫解析script_详解java爬虫jsoup解析多空格class数据

    在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass("class的值"),这种方法获取不到想要的数据. ...

  5. 采集 58同城 房产数据信息 | Java爬虫 Jsoup

    一个数据采集系统(通俗的说就是爬虫),用来采集 58同城 房产 | 郑州中的房屋数据.使用 Java 语言和Jsoup库编写,这里分享给大家. 最后采集的数据结果 CSV 文件保存的,如下所示 说明 ...

  6. java jsoup 网络爬虫 jsoup解析html Java爬虫 Jsoup爬虫 jsoup例子

    java jsoup 网络爬虫 java jsoup 网络爬虫 学习例子(一)抓取豆瓣电影名称+推荐星级 java jsoup 网络爬虫 学习例子(二)只抓取豆瓣电影5星(力荐)电影名称 java j ...

  7. JAVA爬虫Jsoup,抓取房价

    里面的命名很烂,但能跑出来效果. 依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependenc ...

  8. Java爬虫Jsoup的使用

    Jsoup的使用 0. Jsoup介绍 1. Get请求 2. Post请求 3. 通过document获取元素 4. 练习Demo 练习1 练习2:获取所有图片 练习3获取商品 练习4 下载图片 5 ...

  9. Java爬虫Jsoup简易使用

    一.准备工作 1.下载jsoup工具,如果是maven项目,请在pm.xml中加入以下代码: jsoup虽然不是一个很强大的爬虫工具,但是它对于网页html文档的各种处理确实是很强大的,同时自身也是个 ...

  10. JAVA爬虫-Jsoup + JsoupXPath

    JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML和HTML文档.核心类为JXDocument.JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节点. ...

最新文章

  1. Map集合练习之对字符串中字母出现的次数求和
  2. mysql 锁-比较详细、深入的介绍
  3. 重磅发布 | 2021 年 OpenAtom XuperChain 开源技术路径
  4. java创建一个图形类getv_java建立类和对象分糖果
  5. 基于Scrapy框架的Python新闻爬虫
  6. mysql .myi权限_mysql之引擎、Explain、权限详解
  7. java 获取各省市的区号_城市查区号示例代码
  8. CUDA各版本下载地址
  9. 程序员的第一款 Hello World
  10. msp430是什么?
  11. GTX高速收发器Transceiver概述与收发共同特征(UG476)
  12. 【渝粤题库】陕西师范大学202291商业银行经营学作业(高起专)
  13. 我想转行IT,想找一个培训机构,目前看了优就业、千峰、叩丁狼、黑马、达内等机构,请问哪个好一点?
  14. linux目录名乱码,Linux下文件名乱码解决
  15. Linux搭建LAMP、LNMP环境;论坛的搭建;
  16. 乒乓球比赛赛程_这家律所再次摘得业余乒乓球赛事冠军,为何结缘乒乓?
  17. 三对角行列式计算(涉及等差数列的构造+一元二次方程两个解的关系)
  18. 草图实时生成动漫角色!太秀了
  19. vue项目中运行项目造成浏览器崩溃
  20. 腾讯被爆内测配送机器人,与阿里顺丰直面物流竞争!

热门文章

  1. 2021年10种最佳数据库管理软件
  2. 第一次c语言课程设计——学生选课管理系统
  3. java反编译工具luyten增强版
  4. Mac 安装 Java 反编译工具 JD-GUI
  5. json map 转换 android,map和json之间的转换
  6. 如何写一个NB的商业计划书
  7. 第十届全国大学生智能汽车竞赛获奖名单
  8. JAVA笔记自整理(Java)
  9. 蒲公英联机平台的服务器虚拟IP,蒲公英客户端如何使用固定虚拟IP管理虚拟局域网的步骤是什么?...
  10. 利用TCP协议进行ping