zoukankan      html  css  js  c++  java
  • 6.25Java网络编程之网络爬虫原理

    6.25Java网络编程之网络爬虫原理

    Web Spider

    虚拟化、形象化的概念,从网络上查找数据、获取数据、下载数据、分析数据。对数据进行抽取、清洗、筛选等操作。

    这里面的核心是有价值的数据、有价值的资源。

    seo

    搜索引擎优化,便于获得搜索引擎公司的排名

    sem

    再搜索引擎公司商付费要排名

    爬虫的基本步骤

    • 拿到URL

    • 下载资源

    • 分析资源--->正则表达式(快速地把有规律地数字拿出来)

    • 数据抽取、清洗(stockstr)

    • 数据存储

    (使用到URL类当中的openstream方法--->从网络上拿数据下来本身就是一个IO流的过程。只不过打开的是网络流)

    浏览器和服务器是分开的,他们之间建立连接通过请求响应的模式。

    实例demo

    package netstudy;


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;

    /**
    * 网络爬虫的原理 + 模拟浏览器爬取数据
    *
    * @since JDK 1.8
    * @date 2021/6/25
    * @author Lucifer
    */
    public class SpiderTestNo1 {

       public static void main(String[] args) throws IOException {

           /*获取URL*/
    //       URL url = new URL("https://www.jd.com");
           /*模拟浏览器爬取数据*/
           URL url = new URL("https://www.dianping.com");

           /*下载资源*/
           HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
           httpURLConnection.setRequestMethod("GET");
           httpURLConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
           /*
           这个方法是一个key和value
            */
    //       InputStream is = url.openStream();
           /*
           获取到的内容:
           1、html
           2、css:层叠样式表
           3、javascript:动态语言,边解释变执行--->变量的存储区域会变化
           (Java的反射具备动态特性)
            */

           /*处理数据*/
           //使用字符流处理数据
           BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "UTF-8"));

           /*输出数据*/
           String msg = null;
           while (null!=(msg=bufferedReader.readLine())){
               System.out.println(msg);
          }
      }
    }

    API

    方法功能
    InetAddress(识别IP) 封装计算机的IP和DNS(没有端口信息)。常用方法:getLocalHost()、getByName()、getAllByname()、getAddress()、getHostName()
    InetSocketAddress(区分软件) 包含IP和端口信息,常用于Socket通信。实现IP套接字地址(IP地址+端口号),不依赖任何协议。常用方法:getHostName()、getAddress()
    URL(确认访问资源) 统一资源定位符,指向互联网资源的指针。资源可以是简单的文件或目录,也可以是复杂的对象引用。常用方法:getDefaultPort()、getFile()、getHost()、getPath()、getPort()、getProtocol()、getQuery()、getRef()
    It's a lonely road!!!
  • 相关阅读:
    SQL SUBSTRING 函数
    JS复制DOM元素文字内容
    CSS中DIV只出现竖向滚动条且内容自动换行
    Windows下sc create命令行添加/创建/修改服务
    C# FTP删除文件以及文件夹
    涨薪20%!听听这位资深机器学习面试官的内心独白
    《Java从入门到放弃》JavaSE篇:程序结构
    迷茫的程序员
    技术与技术人员的价值
    GitChat·人工智能 | 除了深度学习,机器翻译还需要啥?
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14934445.html
Copyright © 2011-2022 走看看