JAVA爬虫 使用jsoup爬取html网页数据get&post
JAVA爬虫 使用jsoup爬取html网页数据get&post
1.导入POM依赖
<dependency> <!-- jsoup --> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency>
在这之前我这边就以爬取jd的数据为例
:https://search.jd.com/Search?keyword=java
2.开始爬取数据一行代码搞定GET请求
public class TestJD { @Test public void doGetjd() throws Exception { String keyword = "java"; String url = "https://search.jd.com/Search?keyword="+keyword; Document document =Jsoup.parse(new URL(url),300000); System.out.println(document.body().html()); } }
执行结果如下:
当你执行完上面代码发现爬取的并不是我想要的内容,那么就要去网页自行去分析,找到爬取内容那部分的标签,很明显我这边需要爬取的是一个大的div那么我先获取这个div的id(j_goodList)。
下面代码就获取价格里面的文本内容
public class TestJD { @Test public void doGetjd() throws Exception { String keyword = "java"; //获取请求连接,需要联网 String url = "https://search.jd.com/Search?keyword="+keyword; //解析网页(返回浏览器的Document对象) Document document =Jsoup.parse(new URL(url),300000); //获取div,js里面的方法这里都能用 Element element = document.getElementById("J_goodsList"); //获取div里面的每个li Elements elements = element.getElementsByTag("li"); for (Element el :elements){ String text = el.getElementsByClass("p-price").eq(0).text(); System.out.println(text); } } }
具体需要什么内容这一步还是得要自己去网页分析。非常简单,有手就行。
3:接下来是POST
post和get的区别就是请求传参数不同。那么post最关键的就是.data(Map)传条件,直接写个Map就搞定。然后k-v一一对应。
public void doPOSTjd() throws Exception { Map<String, String> param = new HashMap<>(); String url = "请求url需要替换成post请求的"; //解析网页(返回浏览器的Document对象) Document document =Jsoup.connect(url) .data(param) //这个就是存放post请求的参数 .timeout(30000) .post(); //获取div,js里面的方法这里都能用 Element element = document.getElementById("J_goodsList"); //获取div里面的每个li Elements elements = element.getElementsByTag("li"); for (Element el :elements){ String pprice = el.getElementsByClass("p-price").eq(0).text(); String pname = el.getElementsByClass("p-price").eq(0).text(); String pbookdetails = el.getElementsByClass("p-bookdetails").eq(0).text(); System.out.println("----------------"); System.out.println(pprice); System.out.println(pname); System.out.println(pbookdetails); } } }
上一篇:
IDEA上Java项目控制台中文乱码