爬虫是一个虚拟化、形象化的概念,表示的是我们从网络上查找数据、获取数据、下载数据、分析数据,对数据进行抽取、清洗、筛选等一系列的操作,我们称之为网络爬虫。这里面最核心的就是数据,有价值的数据,有价值的资源。
每家公司对数据的要求不一样,比如电商,可能关注的就是商品,关注用户的购买记录,根据这个购买记录可以分析出用户的喜爱度,然后推送商品,推送广告,这就是一个典型的网络爬虫的应用。
一般爬虫有这几步:
1、给一个URL。互联网上的资源都是有联系的,只要你给我一个URL,准确的来说你可以把全世界的资源都下载下来,当然这是理论值。如果你要抓取的话必须得到对方的同意,不是什么人都希望你去抓,这样它的数据不安全,同时服务器压力大。
2、根据URL下载资源。
3、分析资源。分析资源就会借助一个工具叫正则表达式。正则说的简单一点就是数据都是有规律的数据,我们快速把这些有规律的数据拿出来,比如说18、28这样的年龄,如果你要if else判断就判断不完了,那现在我们发现它们都是两位整数,这就叫有规律,比如\d{2}这就叫正则表达式。
4、数据抽取、清洗、存储等
这里关注第1、2步。
package com.sxt.loc;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
/**
* 网络爬虫的原理
*
* @author
*
*/
public class SpiderTest01 {
public static void main(String[] args) throws Exception {
//获取URL https是http的升级版,安全协议
URL url =new URL("https://www.jd.com");
//并不是所有网站都允许爬取数据。注:只要浏览器能访问,都可以爬取到数据,只不过需要巧妙的思路
//URL url =new URL("https://www.dianping.com");
//下载资源
InputStream is = url.openStream();
BufferedReader br =new BufferedReader(new InputStreamReader(is,"UTF-8"));
String msg =null;
while(null!=(msg=br.readLine())) {
System.out.println(msg);
}
br.close();
//分析
//处理。。。。
}
}
package com.sxt.loc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 网络爬虫的原理 +模拟浏览器
*
* @author
*
*/
public class SpiderTest02 {
public static void main(String[] args) throws Exception {
//获取URL
URL url =new URL("https://www.dianping.com");
//下载资源
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
BufferedReader br =new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String msg =null;
while(null!=(msg=br.readLine())) {
System.out.println(msg);
}
br.close();
//分析
//处理。。。。
}
}
转载自原文链接, 如需删除请联系管理员。
原文链接:网络编程_爬虫(Web Spider)原理,转载请注明来源!