网络爬虫(一)

本文介绍了网络爬虫的基础知识,包括爬虫的工作原理和应用场景。后续将分享如何制作一个简单的爬虫,用于抓取小说网站的内容。
摘要由CSDN通过智能技术生成
<!--网络爬虫-->
<!-- 添加Httpclient支持 -->
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.2</version>
</dependency>

<!-- 添加jsoup支持 -->
<dependency>
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.10.1</version>
</dependency>
public class crawler {
  //解析网页的内容
    public static void paseWebPage(String content){
        if("".equals(content)){
            return;
        }
        //这里采用Jsoup
     /* Jsoup是一款比较好的Java版HTML解析器。可直接解析某个URL地址、HTML文本内容
     *  这里用来解析html字符串(我们的例子就是),返回的Document对象(一个文档的对象模型):文档由多个Elements和TextNodes组成
     * */
       Document doc= Jsoup.parse(content);
       //这是组合用法,通过子标签组合来定位节点(d1>dd>a写法一样可行)
       Elements links= doc.select("dl dd a");
       //开始获取节点的内容
/*        attr(String key)获得元素的数据 attr(String key, String value) 设置元素数据
        attributes()                获得所以属性
        id(),className(),classNames()获得id class得值
        text()                           获得文本值
        text(String value)     设置文本值
        html()                          获取html
        html(String value)    设置html
        outerHtml()               获得内部html
        data()                          获得数据内容
        tag()                                      获得tag 和 tagName() 获得tagname*/
        for (int i=0;i< links.size();i++){
            Element link= links.get(i);
        String url=link.attr("href");
        System.out.println("提取的内容"+"https://www.huangyixiaoshuo.com"+url+"目录"+link.text());
    }
    }

    //获得爬虫的网页内容
   public static void paseUrl(String url){
        //首先我们先获得Http客户端(作用就类似我们的浏览器,通过他来发送请求)
       CloseableHttpClient  httpClient=HttpClients.createDefault();
       //准备Get请求(HTTP的get方法)
        HttpGet httpGet= new HttpGet(url);
        //响应模型(用来我们HTTP请求的返回)
        CloseableHttpResponse response=null;
        //可以理解为我们现在有了浏览器和HTTP请求,那么现在就是处理响应的内容
       try {
           //由客户端发送GET请求
           response=httpClient.execute(httpGet);
           //从响应中获得响应的实体
           HttpEntity entity=response.getEntity();
           //响应内容的类型(我这次采用爬小说网站,所以返回的是text/html)
           System.out.println("内容类型"+entity.getContentType().getValue());
           if("text/html; charset=UTF-8".equals(entity.getContentType().getValue())){
              //返回响应内容
               String content= EntityUtils.toString(entity,"UTF-8");
              System.out.println(content);
               paseWebPage(content);
           }
       } catch (IOException e) {
           e.printStackTrace();
       }finally {
           //结束要关掉这些
           if(response!=null){
               try {
                   response.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
           try {
               httpClient.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }

    public static void main(String[] args) {
    paseUrl("https://www.huangyixiaoshuo.com/0/487/");
    }
}

效果图

还有的后面有空继续写,有多余时间弄个爬虫的小说网站 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值