Java网络编程之网络爬虫原理
2021/6/26 17:27:26
本文主要是介绍Java网络编程之网络爬虫原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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() |
这篇关于Java网络编程之网络爬虫原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器