今天晚上,帮我一个同门师兄,解决一下问题.
题目是,抓取一个网站的所以页面,并抓下这些页码的所有网址.
代码如下:
package com.hwp.test;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SearchEngine
{
private Map<String, List<String>> pageNameUrls;
public SearchEngine()
{
pageNameUrls = new HashMap<String, List<String>>();
}
private String getContent(String httpUrl)
{
String htmlCode = "";
try
{
InputStream in;
URL url = new java.net.URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
connection.connect();
in = connection.getInputStream();
byte[] buffer = new byte[512];
int length = -1;
while ((length = in.read(buffer, 0, 512)) != -1)
{
htmlCode += new String(buffer, 0, length);
}
}
catch (Exception e)
{}
if (htmlCode == null)
{
return "";
}
return htmlCode;
}
private List<String> getPageUrls(String page)
{
List<String> urls = new ArrayList<String>();
String content = this.getContent(page);
String reg = "http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(content);
String url = "";
while (matcher.find())
{
url = matcher.group();
if (!urls.contains(url))
{
urls.add(url);
}
}
return urls;
}
public void test(String url, String baseUrl)
{
String content = this.getContent(url);
// System.out.println(content);
String reg = "(" + baseUrl
+ "(/[\\w-]+)*(/[\\w-]+\\.(htm|html|xhtml|jsp|asp|php)))";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(content);
while (matcher.find())
{
String tempUrl = matcher.group();
if (!this.pageNameUrls.containsKey(tempUrl))
{
//System.out.println(tempUrl);
this.pageNameUrls.put(tempUrl, this.getPageUrls(tempUrl));
test(tempUrl, baseUrl);
}
}
}
public static void main(String[] args)
{
String url = "http://www.blogjava.net";
String baseUrl = "http://www.blogjava.net";
SearchEngine se = new SearchEngine();
se.test(url, baseUrl);
Map<String, List<String>> map= se.pageNameUrls;
Set<Map.Entry<String, List<String>>> set = map.entrySet();
for(Map.Entry<String, List<String>> entry: set)
{
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
}
分享到:
相关推荐
标题中的“一款通过网址抓网页的小软件”指的是一个轻量级的应用程序,它的主要功能是能够根据用户提供的网址,从互联网上抓取网页内容。这种软件通常被称作网络爬虫或者网页抓取工具,它可以帮助用户自动化地获取...
标签“抓网页”进一步明确了该工具的主要功能,即专注于捕获与网页相关的网络数据包。 压缩包内的文件名提供了关于这个特定工具的更多信息: 1. HttpAnalyzerFullV5.exe:这可能是HttpAnalyzer的完整版v5版本的可...
本资源“抓网页(zh).rar”显然关注的是如何使用C#来抓取网页内容,这是网络爬虫技术的一个关键部分。网络爬虫是自动遍历互联网并收集信息的程序,对于数据分析、搜索引擎优化、市场研究等用途至关重要。 首先,...
"抓网页软件"是一款专门设计用于此目的的工具,能够帮助用户将网页的内容捕获并保存为图像文件,如JPG格式。这种功能在许多情况下非常实用,例如当需要保存网页的当前状态,防止未来内容更改,或者在没有网络连接时...
site sucker mac下的抓网页软件,非常好用,设置路径层次后自动抓取,速度也很快
抓网页获取本机ip地址java实用.pdf
在VB6(Visual Basic 6)中,网页抓取,也称为网络爬虫或网页抓取,是一项技术,用于从互联网上自动收集信息。在这个例子中,我们将探讨如何使用VB6来抓取指定网页——"http://www.nfd.com.tw/house/year/2010.htm"...
一把抓是一款可以帮助用户提取完整网站内容的工具。用户可以下载网站单个页面或多个页面,包括JS、CSS、图片、背景图片、音乐、Flash 一把抓 特点: 1、一键下载页面所有内容,并自动更换网络链接为本地链接 2、...
本示例代码演示了如何使用Java进行基础的网页抓取,主要涉及`getProperty()`函数和其他相关函数。我们将深入探讨这些知识点。 首先,`System.getProperty("line.separator")`是用来获取当前操作系统默认的行分隔符...
### 使用C#编写网页抓取应用程序详解 #### 一、引言 随着互联网技术的发展,网页抓取成为了获取网络信息的重要手段之一。本篇文章将详细介绍如何使用C#和.NET框架来构建一个简单的网页抓取程序。通过这个示例,...
python抓取网页数据入门知识,资料来源于网上共享
网页抓取,也称为网络抓取或网络爬虫,是通过自动化程序模拟浏览器行为,遍历互联网并获取所需信息的过程。Teleport Ultra作为一款专业的抓取工具,具备高效、自定义和批量操作的特点,能够帮助用户便捷地获取大量...
在Java编程中,获取本机IP地址有多种方法,而从网页抓取IP地址是一种间接的方式。这个方法涉及网络连接、网页解析以及正则表达式的应用。以下是一个具体的示例,展示了如何通过Java代码从指定网页抓取本机IP地址。 ...
以下是一个基于网络连接和正则表达式解析的简单示例,通过抓取特定网页来获取本机IP地址。 首先,我们需要理解实现的原理: 1. **连接网络**:Java提供了`java.net.URLConnection`类来建立与网络资源的连接。在这...
提供全屏捕捉、 窗口或控件捕捉、扩展窗口捕捉、区域捕捉、超长网页捕捉、网页元素捕捉、 视频捕捉等强大功能,支持使用鼠标手势或快捷键启动捕捉,支持自动保存, 可选择多种保存格式。支持自动升级...
### 使用Python3编写抓取网页和只抓网页图片的脚本 #### 一、概述 在互联网技术快速发展的今天,网络爬虫作为一种重要的数据采集工具,被广泛应用于多个领域,如数据分析、搜索引擎优化等。本文将详细介绍如何使用...
这个简单的演示将向我们展示 Stackless Python 如何帮助我们更有效地抓取网页,同时利用其并发特性。 Stackless Python 的主要特点包括微线程(microthreads)和通道(channels)。微线程比标准的 OS 级线程更轻...
网页抓包浏览器是一种工具,主要用于监控、记录和分析网络数据包,特别是在网页浏览时的数据交互。易语言是一种中文编程语言,这款抓包浏览器是利用易语言编写的,旨在为用户提供便利的数据捕获和分析功能,有助于...
网页抓包数据分析工具