java爬虫抓取网页数据(什么是网络爬虫?网络蜘蛛的实现原理根据这种原理 )
优采云 发布时间: 2022-03-19 04:12java爬虫抓取网页数据(什么是网络爬虫?网络蜘蛛的实现原理根据这种原理
)
什么是网络爬虫?网络爬虫也称为蜘蛛。网络蜘蛛通过网页的链接地址搜索网页,从网站的一个页面(通常是首页)开始,读取网页内容,找到网页中的其他链接地址,然后通过这些链接地址找到下一个网页,以此类推,直到这个网站的所有网页都被爬取完毕。如果把整个互联网看成一个网站,那么网络蜘蛛就可以利用这个原理爬取互联网上的所有网页。因此,为了在网络上抓取数据,不仅是爬虫程序,还有一个服务器,它可以接受“爬虫”发回的数据,并对其进行处理和过滤。爬虫爬取的数据量越大,对服务器的性能要求就越高。.
网络爬虫实现原理
根据这个原理,编写一个简单的网络爬虫程序,这个程序的作用是获取网站发回的数据,并提取其中的URL。我们将获取的 URL 存储在一个文件夹中。只需从 网站 获得的 URL 进一步循环,即可获取数据并从中提取其他数据。这里就不写了,只是模拟一个最简单的原理。实际的 网站 爬虫远比这复杂。太多了,无法深入讨论。除了提取URL之外,我们还可以提取我们想要的各种其他信息,只要我们修改过滤数据的表达式即可。下面是一个用Java模拟的程序,用来提取新浪网页上的链接,并保存在一个文件中
源代码
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WebSpider {
public static void main(String[] args) {
URL url = null;
URLConnection urlconn = null;
BufferedReader br = null;
PrintWriter pw = null;
String regex = "http://[\\w+\\.?/?]+\\.[A-Za-z]+";
Pattern p = Pattern.compile(regex);
try {
url = new URL("http://www.sina.com.cn/");
urlconn = url.openConnection();
pw = new PrintWriter(new FileWriter("e:/url.txt"), true);//这里我们把收集到的链接存储在了E盘底下的一个叫做url的txt文件中
br = new BufferedReader(new InputStreamReader(
urlconn.getInputStream()));
String buf = null;
while ((buf = br.readLine()) != null) {
Matcher buf_m = p.matcher(buf);
while (buf_m.find()) {
pw.println(buf_m.group());
}
}
System.out.println("获取成功!");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
pw.close();
}
}
}
在 Eclipse 中运行的结果
底部显示收购成功!接下来我们到E盘根目录下找到url.txt。看看有没有这个文件
接下来,我们打开txt文件,找到一系列URL链接。这些都是我们爬取新浪首页得到的网址