使用httpclient和jsoup爬取51job信息

核心思想httpclient爬取数据,jsoup解析数据;需要导入这两个的依赖或者jar包。

一。HttpClient简介*
HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。它的主要功能有:
(1) 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2) 支持自动转向
(3) 支持 HTTPS 协议
(4) 支持代理服务器等
二。Jsoup简介
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。它的主要功能有:
(1) 从一个URL,文件或字符串中解析HTML;
(2) 使用DOM或CSS选择器来查找、取出数据;
(3) 可操作HTML元素、属性、文本;
三。添加依赖或jar包
依赖

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.3</version>
</dependency>

jar包链接
http://hc.apache.org/downloads.cgi
http://jsoup.org/packages/jsoup-1.8.1.jar

四。爬取的页面
在这里插入图片描述
在这里插入图片描述
五。代码

package cn.itcast.crawler.test;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class HttpGetTest {
    public static void main(String[] args) {
        //创建对象
        HttpGetTest httpGetTest = new HttpGetTest();
        //对象调用爬取页面信息的方法
        String contant=httpGetTest.gethtml("https://jobs.51job.com/nanjing/120031745.html?s=01&t=0");
        //使用对象解析爬取的页面信息
        httpGetTest.parsehtml(contant);
    }

    public String gethtml(String url){
        String urlMessage=null;
        //创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建HttpGet对象,设置url访问地址
        HttpPost httpPost= new HttpPost(url);
        //创建响应
        CloseableHttpResponse response = null;
        try{
            //使用HttpClient发起请求,获取response
            response=httpClient.execute(httpPost);
            //解析响应
            if (response.getStatusLine().getStatusCode()==200){
                urlMessage = EntityUtils.toString(response.getEntity(),"GBK");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                response.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            try{
                httpClient.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return urlMessage;
    }

    public  void parsehtml(String html ){
        //解析html获取Document
        Document doc = Jsoup.parse(html);
        //获取标题内容
        String title=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tHeader.tHjob > div > div.cn > h1").text();
        System.out.println("标题:"+title);
        //获取公司名称
        String companyName=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tHeader.tHjob > div > div.cn > p.cname > a.catn").text();
        System.out.println("公司名称:"+companyName);
        //获取职位信息
        String position=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(1) > h2 > span").text();
        String positionMessage=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(1) > div").text();
        System.out.println(position+":"+positionMessage);
        //获取联系方式
        String contact=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(2) > h2 > span").text();
        String contant=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(2) > div > p").text();
        System.out.println(contact+":"+contant);
        //公司信息
        String company = doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(3) > h2 > span").text();
        String companyMessage=doc.select("body > div.tCompanyPage > div.tCompany_center.clearfix > div.tCompany_main > div:nth-child(3) > div").text();
        System.out.println(company+":"+companyMessage);
    }
}

六。运行结果
在这里插入图片描述
补充:
页面按F12
在这里插入图片描述
然后移到你想获取信息的位置
在这里插入图片描述
右边会出现对应信息的标签处
在这里插入图片描述
然后右击对应的标签
在这里插入图片描述
最后粘贴到选择器中
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jsoup是一个Java的HTML解析器,它可以很方便地解析HTML文档,获取HTML中的元素、属性、文本等信息。但是,jsoup并不支持解析JavaScript和CSS,因为JavaScript和CSS是在浏览器中解析的,而不是在HTML中解析的。 如果你想爬取页面的JavaScript和CSS,可以使用其他工具来获取页面源代码,如HttpClient、Selenium等。这些工具可以模拟浏览器的行为,获取完整的页面源代码,包括JavaScript和CSS。 下面是一个使用HttpClientJsoup爬取页面的例子: ```java import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; public class JsoupDemo { public static void main(String[] args) throws IOException { String url = "http://www.example.com"; CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); String html = ""; try (CloseableHttpResponse response = httpClient.execute(httpGet); InputStream inputStream = response.getEntity().getContent()) { html = IOUtils.toString(inputStream, StandardCharsets.UTF_8); } Document document = Jsoup.parse(html); // 获取页面中的JavaScript和CSS Elements scripts = document.select("script"); Elements styles = document.select("style"); // 处理页面元素 // ... httpClient.close(); } } ``` 这个例子中,我们使用HttpClient来发送HTTP请求获取页面源代码,然后使用Jsoup来解析页面元素。通过`document.select("script")`和`document.select("style")`来获取页面中的JavaScript和CSS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值