2021.12.20(第二周) 实习周记lzhuan

文章目录

      • 第二周 实习任务
      • 一、服装网站热榜爬虫

第二周 实习任务

  1. 服装网站热榜爬虫,按照【爬虫库表结构】储存数据。

一、服装网站热榜爬虫

这次安排的任务使用Java做爬虫,由于没有接触过爬虫方面的知识先对爬虫做一些了解再进行任务。。。

1.1 使用jsoup

  • 获取p标签中的内容
    2021.12.20(第二周) 实习周记lzhuan_第1张图片
    <dependencies>
        
        <dependency>
            <groupId>org.jsoupgroupId>
            <artifactId>jsoupartifactId>
            <version>1.14.2version>
        dependency>
    dependencies>
public class reptile {

    public static void main(String[] args) {
        Document document = null;
        try {
            //连接目标站点,get静态html代码
            document = Jsoup.connect("https://www.runoob.com/js/js-tutorial.html").get();
            //获取所有的元素div
            Elements elements = document.select("div");
            //遍历div
            for (int i = 0; i < elements.size(); i++) {
                //得到div中p标签的文本
                String title = elements.select("p").get(i).text();
                //打印p标签中的内容
                System.out.println(title);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

结果:2021.12.20(第二周) 实习周记lzhuan_第2张图片
1.2 使用HttpClient

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的官网:
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等

<dependency>
    <groupId>org.apache.httpcomponentsgroupId>
    <artifactId>httpclientartifactId>
    <version>4.5.8version>
dependency>
public class reptile {

    public static void main(String[] args) throws Exception{
        //1、生成httpClient,相当于该打开一个浏览器
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        
        //2、创建get请求,相当于在浏览器地址栏输入网址
        HttpGet request = new HttpGet("https://www.runoob.com/");
        try{
            //3.执行get请求,相当于在输入地址栏后敲回车键
            response = httpClient.execute(request);

            //4.判断响应状态为200,进行处理
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            	//5、获取响应的内容
                HttpEntity httpEntity = response.getEntity();
                String html = EntityUtils.toString(httpEntity, "utf-8");
                System.out.println(html);
            }else {
                //6、如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略
                System.out.println("返回状态不是200");
                System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
        	//7、关闭对象
            HttpClientUtils.closeQuietly(response);
            HttpClientUtils.closeQuietly(httpClient);
        }
    }
}
  • 有部分网站会检测爬虫,这时候需要解决反爬虫,通常情况下对请求头进行伪装

// 2.创建get请求,相当于在浏览器地址栏输入 网址
HttpGet request = new HttpGet(“http://ccaf.51haojob.com/”);
// 设置请求头,将爬虫伪装成浏览器
request.setHeader(“User-Agent”,“Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36”);

public class reptile {

    public static void main(String[] args) throws Exception{
        //1、生成httpClient,
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        //2.创建get请求,相当于在浏览器地址栏输入 网址
        HttpGet request = new HttpGet("http://ccaf.51haojob.com/");
        //设置请求头,将爬虫伪装成浏览器
        request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");
        //HttpHost proxy = new HttpHost("27.159.188.152", 3256);
        //RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
        //request.setConfig(config);
        try{
            //3.执行get请求,相当于在输入地址栏后敲回车键
            response = httpClient.execute(request);

            //4.判断响应状态为200,进行处理
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                HttpEntity httpEntity = response.getEntity();
                String html = EntityUtils.toString(httpEntity, "utf-8");
                System.out.println(html);
            }else {
                //如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略
                System.out.println("返回状态不是200");
                System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            HttpClientUtils.closeQuietly(response);
            HttpClientUtils.closeQuietly(httpClient);
        }

    }
}

你可能感兴趣的:(实习,爬虫,html,python)