java爬虫抓取网页数据(网络爬虫(又被称为网页蜘蛛,网络机器人() )
优采云 发布时间: 2021-11-01 10:11java爬虫抓取网页数据(网络爬虫(又被称为网页蜘蛛,网络机器人()
)
网络爬虫
网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中,更常见的是网络追逐)是按照某些规则自动抓取万维网上信息的程序或脚本。
其他不太常用的名称是蚂蚁、自动索引、模拟器或蠕虫。网络蜘蛛通过网页的链接地址搜索网页,从某个页面(通常是首页)开始,阅读
对于网页的内容,找到网页中的其他链接地址,然后通过这些链接地址找到下一个网页,如此循环下去,直到这个网站的所有网页都被爬取。如果整个
把互联网想象成一个网站,那么网络蜘蛛就可以利用这个原理抓取互联网上的所有网页。所以如果要抓取互联网上的数据,不仅需要一个爬虫程序,还需要一个
对于接收“爬虫”发回的数据并进行处理和过滤的服务器,爬虫抓取的数据量越大,对服务器的性能要求就越高。
1 关注爬虫工作原理及关键技术概述
网络爬虫是一种自动提取网页的程序。它从万维网下载网页以供搜索引擎使用。它是搜索引擎的重要组成部分。传统爬虫从一个或几个初始网页的URL开始,获取
URL,在抓取网页的过程中,不断地从当前页面中提取新的URL并放入队列中,直到满足系统的某个停止条件。聚焦爬虫的工作流程比较复杂,需要一定的网页分析
该算法过滤与主题无关的链接,保留有用的链接并将它们放入URL队列中等待被抓取。然后,它会根据一定的搜索策略从队列中选择要抓取的网页的网址,并重复上传
该过程将停止,直到达到系统的某个条件。另外,爬虫爬过的所有网页都会被系统存储起来,进行一定的分析、过滤和索引,以供以后查询检索;
对于焦爬虫来说,这个过程中得到的分析结果,也可以为后续的爬虫过程提供反馈和指导。
与一般网络爬虫相比,聚焦爬虫需要解决三个主要问题:
(1) 爬取目标的描述或定义;
(2) 对网页或数据的分析和过滤;
(3) URL 搜索策略。
分类
根据系统结构和实现技术,网络爬虫大致可以分为以下几类:通用网络爬虫、聚焦网络爬虫、
增量网络爬虫,深网爬虫。实际的网络爬虫系统通常是通过多种爬虫技术的组合来实现的。
网络爬虫的实现原理
根据这个原理,编写一个简单的网络爬虫程序。该程序的作用是获取网站发回的数据,并在该过程中提取URL。获取的 URL 存储在文件夹中。如何从网络上
本站获取的网站会进一步循环获取数据和提取其他数据。我不会在这里写。只能模拟最简单的原理。实际的网站爬虫比这里复杂很多,深入讨论的也太多了。
NS。除了提取URL,我们还可以提取我们想要的各种其他信息,只要我们修改过滤数据的表达式即可。下面是一个使用Java模拟提取新浪页面上的链接并存储的程序
在一个文件中
源代码如下
package com.cellstrain.icell.util;
import java.io.*;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* java实现爬虫
*/
public class Robot {
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]+";
String regex = "https://[\\w+\\.?/?]+\\.[A-Za-z]+";//url匹配规则
Pattern p = Pattern.compile(regex);
try {
url = new URL("https://www.rndsystems.com/cn");//爬取的网址、这里爬取的是一个生物网站
urlconn = url.openConnection();
pw = new PrintWriter(new FileWriter("D:/SiteURL.txt"), true);//将爬取到的链接放到D盘的SiteURL文件中
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();
}
}
}
在idea中运行结果如下:
检查D盘是否有SiteURL.txt文件
SiteURL 文件已成功生成。打开它可以看到所有爬取的url。