其他链接:
java爬虫(jsoup)实战整合mybatisPlus
https://blog.csdn.net/qq_33745371/article/details/109765252
文章目录
1. 创建一个java工程
我每次都创建一个springboot工程,不管用不用的上,感觉方便。
2.在pom.xml添加jsoup依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
3.开始写代码了(访问京东的商品)
我先把总代码上了,没几行。上面的import也露出来,别导错。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.URL;
public class MaiTianTest {
public static void main(String[] args) throws IOException, InterruptedException {
String url = "https://search.jd.com/Search?keyword=java";
Document document = Jsoup.parse(new URL(url), 30000);//获取到了document对象
Element ele = document.getElementById("J_goodsList");
Elements elements = ele.getElementsByTag("li");
for (Element element : elements) {
//eq(0)--获取当前第一个元素; text()---获取文本
String price = element.getElementsByClass("p-price").eq(0).text();//书的价格
String title = element.getElementsByClass("p-name").eq(0).text();//书的标题
System.out.println("=================");
System.out.println(price);
System.out.println(title);
}
}
}
(1)创建一个类,我取名叫MaiTianTest(本来想扒他们的公开信息,结果访问太频繁给我禁了)
(2)先写url,这里搜索的是java相关商品
String url = "https://search.jd.com/Search?keyword=java";
(3)发送请求,获取页面对象–document
Document document = Jsoup.parse(new URL(url), 30000);//获取到了document对象,
//30000代表30000毫秒,如果超过30秒还未返回数据,则中断连接
(4)根据id,获取list
Element ele = document.getElementById("J_goodsList");//整一页的书籍信息都在这了
//可以输出ele看看是什么内容
(5)获取所有标签为“li”的element对象们
Elements elements = ele.getElementsByTag("li");//获取所有书籍信息
//可以输出elements看看是什么内容
(6)遍历elements,拿到单个element,获取详细信息(价格,标题等)
这里我讲一下text()方法------获取标签下的所有文本内容,
假设要获取p标签下的text,那么结果为123456789111
<p>
<a>123</a>
<div>456</div>
789
<div>111</div>
</p>
for (Element element : elements) {
//eq(0)--获取当前第一个元素; text()---获取文本
String price = element.getElementsByClass("p-price").eq(0).text();//书的价格
String title = element.getElementsByClass("p-name").eq(0).text();//书的标题
System.out.println("=================");
System.out.println(price);
System.out.println(title);
}
放上输出结果
如果你报了空指针异常,Exception in thread “main” java.lang.NullPointerException
请输出你的document
Document document = Jsoup.parse(new URL(url), 30000);
System.out.println(document.html());
如果输出的document是这个,说明你被抓住了,https://passport.jd.com/uc/login这是个登陆页面。
<html>
<head>
<script>window.location.href='https://passport.jd.com/uc/login'</script>
</head>
<body></body>
</html>