`
hwpok
  • 浏览: 250658 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

抓网页

阅读更多
今天晚上,帮我一个同门师兄,解决一下问题.
题目是,抓取一个网站的所以页面,并抓下这些页码的所有网址.
代码如下:
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, 0512)) != -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

    本资源“抓网页(zh).rar”显然关注的是如何使用C#来抓取网页内容,这是网络爬虫技术的一个关键部分。网络爬虫是自动遍历互联网并收集信息的程序,对于数据分析、搜索引擎优化、市场研究等用途至关重要。 首先,...

    抓网页软件

    "抓网页软件"是一款专门设计用于此目的的工具,能够帮助用户将网页的内容捕获并保存为图像文件,如JPG格式。这种功能在许多情况下非常实用,例如当需要保存网页的当前状态,防止未来内容更改,或者在没有网络连接时...

    site sucker mac抓网页软件

    site sucker mac下的抓网页软件,非常好用,设置路径层次后自动抓取,速度也很快

    抓网页获取本机ip地址java实用.pdf

    抓网页获取本机ip地址java实用.pdf

    vb6 抓网页例子

    在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#编写网页抓取应用程序详解 #### 一、引言 随着互联网技术的发展,网页抓取成为了获取网络信息的重要手段之一。本篇文章将详细介绍如何使用C#和.NET框架来构建一个简单的网页抓取程序。通过这个示例,...

    手把手教你用python抓网页数据

    python抓取网页数据入门知识,资料来源于网上共享

    Teleport Ultra抓网页工具.zip

    网页抓取,也称为网络抓取或网络爬虫,是通过自动化程序模拟浏览器行为,遍历互联网并获取所需信息的过程。Teleport Ultra作为一款专业的抓取工具,具备高效、自定义和批量操作的特点,能够帮助用户便捷地获取大量...

    抓网页获取本机ip地址java.pdf

    在Java编程中,获取本机IP地址有多种方法,而从网页抓取IP地址是一种间接的方式。这个方法涉及网络连接、网页解析以及正则表达式的应用。以下是一个具体的示例,展示了如何通过Java代码从指定网页抓取本机IP地址。 ...

    抓网页获取本机ip地址java参考.pdf

    以下是一个基于网络连接和正则表达式解析的简单示例,通过抓取特定网页来获取本机IP地址。 首先,我们需要理解实现的原理: 1. **连接网络**:Java提供了`java.net.URLConnection`类来建立与网络资源的连接。在这...

    绿色屏幕抓图工具, 抓网页全图

    提供全屏捕捉、 窗口或控件捕捉、扩展窗口捕捉、区域捕捉、超长网页捕捉、网页元素捕捉、 视频捕捉等强大功能,支持使用鼠标手势或快捷键启动捕捉,支持自动保存, 可选择多种保存格式。支持自动升级...

    使用Python3编写抓取网页和只抓网页图片的脚本

    ### 使用Python3编写抓取网页和只抓网页图片的脚本 #### 一、概述 在互联网技术快速发展的今天,网络爬虫作为一种重要的数据采集工具,被广泛应用于多个领域,如数据分析、搜索引擎优化等。本文将详细介绍如何使用...

    Stackless python 好用之处的一个简单演示:并发抓网页

    这个简单的演示将向我们展示 Stackless Python 如何帮助我们更有效地抓取网页,同时利用其并发特性。 Stackless Python 的主要特点包括微线程(microthreads)和通道(channels)。微线程比标准的 OS 级线程更轻...

    网页抓包浏览器

    网页抓包浏览器是一种工具,主要用于监控、记录和分析网络数据包,特别是在网页浏览时的数据交互。易语言是一种中文编程语言,这款抓包浏览器是利用易语言编写的,旨在为用户提供便利的数据捕获和分析功能,有助于...

    网页抓包数据分析工具

    网页抓包数据分析工具

Global site tag (gtag.js) - Google Analytics