Java爬虫Jsoup篇
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一毛一样。
三、为什么老是被和谐,老子爬个公开的信息怎么了
我们来做一个爬取商品信息的案例:
访问它的网址(哎不敢说名字啊被和谐三次了),搜索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
得到了url,我们就可以解析它的html,先获得dom:
Document document = Jsoup.connect("https://search.jd.com/Search?keyword=java&enc=utf-8").get();
按f12观察网页,检查一下商品名在哪个标签里面
观察发现,在一个id为J_goodsList的div下面的一个类名为p-namediv下,然后我们还可以看出,每一个商品就是一个li。
于是:
Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");
获取J_goodsList下的所有li。
遍历每一个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篇相关推荐
- Java爬虫入门篇---Jsoup工具
Java爬虫入门篇---Jsoup工具 前言 准备工作 获取文本数据 获取页面中所有的图片 前言 pythoy的scrapy框架是大名鼎鼎,Jsoup则为Java框架的爬虫 准备工作 1.下载jsou ...
- java爬虫---Jsoup
简单易懂的java爬虫-Jsoup 做个简单的Demo,爬取酒店的基本信息,酒店名称.酒店地址.酒店星级.酒店的图片等.这里考虑在哪个网站爬取这些数据呢?第一个想到的就是X程上. Jsoup爬取的是网 ...
- java爬虫(jsoup)实现搜狗图片一键下载
java爬虫(jsoup)实现搜狗图片一键下载 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.no ...
- java爬虫解析script_详解java爬虫jsoup解析多空格class数据
在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass("class的值"),这种方法获取不到想要的数据. ...
- 采集 58同城 房产数据信息 | Java爬虫 Jsoup
一个数据采集系统(通俗的说就是爬虫),用来采集 58同城 房产 | 郑州中的房屋数据.使用 Java 语言和Jsoup库编写,这里分享给大家. 最后采集的数据结果 CSV 文件保存的,如下所示 说明 ...
- java jsoup 网络爬虫 jsoup解析html Java爬虫 Jsoup爬虫 jsoup例子
java jsoup 网络爬虫 java jsoup 网络爬虫 学习例子(一)抓取豆瓣电影名称+推荐星级 java jsoup 网络爬虫 学习例子(二)只抓取豆瓣电影5星(力荐)电影名称 java j ...
- JAVA爬虫Jsoup,抓取房价
里面的命名很烂,但能跑出来效果. 依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependenc ...
- Java爬虫Jsoup的使用
Jsoup的使用 0. Jsoup介绍 1. Get请求 2. Post请求 3. 通过document获取元素 4. 练习Demo 练习1 练习2:获取所有图片 练习3获取商品 练习4 下载图片 5 ...
- Java爬虫Jsoup简易使用
一.准备工作 1.下载jsoup工具,如果是maven项目,请在pm.xml中加入以下代码: jsoup虽然不是一个很强大的爬虫工具,但是它对于网页html文档的各种处理确实是很强大的,同时自身也是个 ...
- JAVA爬虫-Jsoup + JsoupXPath
JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML和HTML文档.核心类为JXDocument.JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节点. ...
最新文章
- Map集合练习之对字符串中字母出现的次数求和
- mysql 锁-比较详细、深入的介绍
- 重磅发布 | 2021 年 OpenAtom XuperChain 开源技术路径
- java创建一个图形类getv_java建立类和对象分糖果
- 基于Scrapy框架的Python新闻爬虫
- mysql .myi权限_mysql之引擎、Explain、权限详解
- java 获取各省市的区号_城市查区号示例代码
- CUDA各版本下载地址
- 程序员的第一款 Hello World
- msp430是什么?
- GTX高速收发器Transceiver概述与收发共同特征(UG476)
- 【渝粤题库】陕西师范大学202291商业银行经营学作业(高起专)
- 我想转行IT,想找一个培训机构,目前看了优就业、千峰、叩丁狼、黑马、达内等机构,请问哪个好一点?
- linux目录名乱码,Linux下文件名乱码解决
- Linux搭建LAMP、LNMP环境;论坛的搭建;
- 乒乓球比赛赛程_这家律所再次摘得业余乒乓球赛事冠军,为何结缘乒乓?
- 三对角行列式计算(涉及等差数列的构造+一元二次方程两个解的关系)
- 草图实时生成动漫角色!太秀了
- vue项目中运行项目造成浏览器崩溃
- 腾讯被爆内测配送机器人,与阿里顺丰直面物流竞争!