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);

    }
}
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值