java爬虫抓取网页数据(网络爬虫(又被称为网页蜘蛛,网络机器人的实现原理) )
优采云 发布时间: 2022-01-03 02:09java爬虫抓取网页数据(网络爬虫(又被称为网页蜘蛛,网络机器人的实现原理)
)
网络爬虫网络爬虫(也称为网络蜘蛛、网络机器人,在FOAF社区中,更常见的是网络追逐),是一种根据一定的规则或脚本自动抓取万维网上信息的程序。
关注爬虫的工作原理及关键技术概述
网络爬虫是一种自动提取网页的程序。它从万维网下载网页以供搜索引擎使用。它是搜索引擎的重要组成部分。传统爬虫从一个或多个初始网页的网址开始,获取初始网页上的网址。在爬取网页的过程中,他们不断地从当前页面中提取新的URL并将它们放入队列中,直到满足系统的某个停止条件。聚焦爬虫的工作流程比较复杂。需要按照一定的网页分析算法过滤与主题无关的链接,保留有用的链接,放入URL队列等待被抓取。然后,它会根据一定的搜索策略从队列中选择下一个要抓取的网页的网址,重复上述过程,直到达到系统的某个条件时停止。另外,爬虫爬过的所有网页都会被系统存储起来,进行一定的分析、过滤、索引,以备以后查询检索;对于重点爬虫,本过程中得到的分析结果仍有可能对后续的爬虫过程提供反馈和指导。
与一般的网络爬虫相比,专注爬虫还需要解决三个主要问题:
(1) 爬取目标的描述或定义;
(2)对网页或数据的分析和过滤;
(3) URL 搜索策略。
网络爬虫的实现原理
根据这个原理,编写一个简单的网络爬虫程序。该程序的作用是获取网站发回的数据,并在该过程中提取URL。获取的 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();
}
}
}