`

提取网页中的超链接

阅读更多
using System;
using System.Xml;
using System.Text;
using System.Net;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;

public class App
{
public static void Main()
{
string strCode;
ArrayList alLinks;

Console.Write("请输入一个网页地址:");
string strURL = Console.ReadLine();
if(strURL.Substring(0,7) != @"http://")
{
strURL = @"http://" + strURL;
}

Console.WriteLine("正在获取页面代码,请稍侯...");
strCode = GetPageSource(strURL);

Console.WriteLine("正在提取超链接,请稍侯...");
alLinks = GetHyperLinks(strCode);

Console.WriteLine("正在写入文件,请稍侯...");
WriteToXml(strURL,alLinks);
}

// 获取指定网页的HTML代码
static string GetPageSource(string URL)
{
Uri uri =new Uri(URL);

HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse();

hwReq.Method = "Get";

hwReq.KeepAlive = false;

StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));

return reader.ReadToEnd();
}

// 提取HTML代码中的网址
static ArrayList GetHyperLinks(string htmlCode)
{
ArrayList al = new ArrayList();

string strRegex = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";

Regex r = new Regex(strRegex,RegexOptions.IgnoreCase);
MatchCollection m = r.Matches(htmlCode);

for(int i=0; i<=m.Count-1; i++)
{
bool rep = false;
string strNew = m[i].ToString();

// 过滤重复的URL
foreach(string str in al)
{
if(strNew==str)
{
rep =true;
break;
}
}

if(!rep) al.Add(strNew);
}

al.Sort();

return al;
}

// 把网址写入xml文件
static void WriteToXml(string strURL, ArrayList alHyperLinks)
{
XmlTextWriter writer = new XmlTextWriter("HyperLinks.xml",Encoding.UTF8);

writer.Formatting = Formatting.Indented;
writer.WriteStartDocument(false);
writer.WriteDocType("HyperLinks", null, "urls.dtd", null);
writer.WriteComment("提取自" + strURL + "的超链接");
writer.WriteStartElement("HyperLinks");
writer.WriteStartElement("HyperLinks", null);
writer.WriteAttributeString("DateTime",DateTime.Now.ToString());


foreach(string str in alHyperLinks)
{
string title = GetDomain(str);
string body = str;
writer.WriteElementString(title,null,body);
}

writer.WriteEndElement();
writer.WriteEndElement();

writer.Flush();
writer.Close();
}

// 获取网址的域名后缀
static string GetDomain(string strURL)
{
string retVal;

string strRegex = @"(\.com/|\.net/|\.cn/|\.org/|\.gov/)";

Regex r = new Regex(strRegex,RegexOptions.IgnoreCase);
Match m = r.Match(strURL);
retVal = m.ToString();

strRegex = @"\.|/$";
retVal = Regex.Replace(retVal, strRegex, "").ToString();

if(retVal == "")
retVal = "other";

return retVal;
}

 
分享到:
评论

相关推荐

    超链接提取工具 网站链接抓取器下载 提取网页全部超链接

    超链接提取工具是一种实用的软件,专为网络数据挖掘和分析设计,主要用于从网页中批量提取超链接。这种工具能够帮助用户快速收集和整理互联网上的链接信息,对于SEO优化、网站分析、网络爬虫开发等领域有着重要的...

    HTMLParser提取网页超链接研究

    ### HTMLParser提取网页超链接研究 #### 一、引言 随着互联网技术的快速发展和普及,全球信息资源呈爆炸式增长。在这个过程中,各种互联网搜索引擎(例如百度、谷歌等)应运而生,它们极大地便利了人们获取所需...

    易语言提取网页中链接地址

    本文将深入探讨如何使用易语言来提取网页中的链接地址,并结合提供的源码进行详细解析。 首先,我们要了解网页的基本结构。网页主要由HTML(HyperText Markup Language)组成,其中`&lt;a&gt;`标签用于定义超链接。提取...

    提取网页内的所有超链接例程

    这两个例程提供了从不同来源提取网页超链接的方法,一个适用于离线处理,另一个则适合实时抓取。通过学习和理解这些代码,开发者可以更好地理解和实践网络数据的抓取与处理,为更复杂的网络爬虫项目打下基础。同时,...

    自己写的获取网页中的超链接代码

    获取网页中的超链接代码通常涉及以下几个步骤: 1. **发送HTTP请求**:首先,我们需要向目标网页发送HTTP GET请求,获取网页的HTML源代码。Python中,可以使用`requests`库来实现这个功能。例如: ```python ...

    VB获取网页上的全部超链接

    在VB(Visual Basic)编程中,获取网页上的全部超链接是一项常见的任务,特别是在进行网络爬虫或者数据分析时。本文将详细讲解如何利用VB实现这一功能,主要涉及的技术点包括HTTP请求、HTML解析以及DOM操作。 首先...

    易语言源码提取文件中的超级链接.rar

    根据其名称,我们可以推测它是用易语言编写的一个程序模块,专门用于扫描和提取文本文件中的超链接。易语言的源代码结构清晰,命令词直观,使得即使是对编程不熟悉的用户也能快速上手。 在易语言中,提取超级链接...

    excel中批量提取超链接.

    excel中批量提取超链接.可以把网页中的超级链接提取出来。

    [Python]提取docx/网页超链接

    总结来说,通过Python的`pydocx`和`BeautifulSoup`库,我们可以方便地从.docx文档中提取超链接,而使用`urlopen`和`BeautifulSoup`可以完成对网页超链接的提取。这些技术对于数据抓取、内容分析和自动化工作流程具有...

    提取Excel超链接信息.rar

    提取Excel超链接信息.rar,当用户从网页或其他的超文本中复制数据到Excel工作表中时,所得到的数据中会包含大量的超链接,许多有价值...如本例,用户希望看到真正的邮件地址,可是它们都被包含在B列的超链接中,没有显示

    perl网页中所有你想要的超链接收集其中数据

    本教程将探讨如何使用Perl从网页中提取超链接并收集所需数据。首先,我们需要了解Perl的基础语法,然后学习如何利用Perl的LWP(Library for WWW in Perl)模块来获取网页源码,接着是HTML解析库如HTML::TreeBuilder...

    excel文件 超链接修复器

    Excel文件中的超链接是连接到外部资源的有效工具,如其他工作簿、网页或本地文件。然而,当这些外部文件的位置发生变化时,超链接就会失效,给用户带来不便。"Excel文件超链接修复器"就是为了解决这个问题而设计的。...

    改超链接 C# 替换超链接

    超链接是由HTML中的`&lt;a&gt;`标签创建的,用于在不同的网页之间建立连接。它通常包含两个部分:`href`属性,定义了链接的目标地址,以及显示的文本,即链接的内容。 在C#中,我们可以使用字符串处理方法来查找并替换...

    HtmlParser提取网页信息的设计与实现

    本文旨在介绍如何利用HtmlParser这一开源工具来高效地提取网页中的关键信息,并将其存储到SQL数据库中,以为后续的数据分析工作做准备。 #### 二、HtmlParser简介 HtmlParser是一个轻量级、快速且易于使用的开源库...

    C#如何获取网页中的所有超链接地址及详细信息

    以上就是使用C#获取网页超链接地址及其详细信息的基本步骤,以及如何与SQL数据库进行交互。在实际应用中,你可能还需要考虑其他因素,如异步处理、错误处理、反爬虫策略以及更复杂的HTML解析需求。在开发过程中,...

    VB取超链接

    在本篇内容中,我们将深入了解如何使用Visual Basic(VB)来提取网页中的超链接信息。这段代码展示了如何通过VBScript与IE WebBrowser控件交互来实现这一目标。 #### 一、核心概念介绍 1. **WebBrowser 控件**:这...

    基于DOM-TREE网页正文提取方法

    利用DOM-TREE模型对网页进行表示 对原始网页进行修正缺省标签的补充等 利用网页正文提取方法对网页进行正文提取,去除网页中的噪声信息,提取出网页中的正文、相关超链接

    poi做excel读取增加超链接

    超链接在Excel中是一种功能,它可以将单元格与网页、文件或电子邮件地址关联,点击后可以直接跳转到对应的目标。 首先,我们需要理解Apache POI中处理Excel超链接的基本概念。在POI API中,`org.apache.poi.ss....

    网页链接提取精灵

    网页链接提取精灵是一款专门设计用于从指定网站中批量提取所有URL链接的工具。这款软件能够高效地抓取网站导航和目录站中的各个网址,而不会下载网页的实际内容,这对于网络爬虫开发、网站分析或者SEO优化等场景非常...

Global site tag (gtag.js) - Google Analytics