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提取网页超链接研究 #### 一、引言 随着互联网技术的快速发展和普及,全球信息资源呈爆炸式增长。在这个过程中,各种互联网搜索引擎(例如百度、谷歌等)应运而生,它们极大地便利了人们获取所需...
本文将深入探讨如何使用易语言来提取网页中的链接地址,并结合提供的源码进行详细解析。 首先,我们要了解网页的基本结构。网页主要由HTML(HyperText Markup Language)组成,其中`<a>`标签用于定义超链接。提取...
这两个例程提供了从不同来源提取网页超链接的方法,一个适用于离线处理,另一个则适合实时抓取。通过学习和理解这些代码,开发者可以更好地理解和实践网络数据的抓取与处理,为更复杂的网络爬虫项目打下基础。同时,...
获取网页中的超链接代码通常涉及以下几个步骤: 1. **发送HTTP请求**:首先,我们需要向目标网页发送HTTP GET请求,获取网页的HTML源代码。Python中,可以使用`requests`库来实现这个功能。例如: ```python ...
在VB(Visual Basic)编程中,获取网页上的全部超链接是一项常见的任务,特别是在进行网络爬虫或者数据分析时。本文将详细讲解如何利用VB实现这一功能,主要涉及的技术点包括HTTP请求、HTML解析以及DOM操作。 首先...
根据其名称,我们可以推测它是用易语言编写的一个程序模块,专门用于扫描和提取文本文件中的超链接。易语言的源代码结构清晰,命令词直观,使得即使是对编程不熟悉的用户也能快速上手。 在易语言中,提取超级链接...
excel中批量提取超链接.可以把网页中的超级链接提取出来。
总结来说,通过Python的`pydocx`和`BeautifulSoup`库,我们可以方便地从.docx文档中提取超链接,而使用`urlopen`和`BeautifulSoup`可以完成对网页超链接的提取。这些技术对于数据抓取、内容分析和自动化工作流程具有...
提取Excel超链接信息.rar,当用户从网页或其他的超文本中复制数据到Excel工作表中时,所得到的数据中会包含大量的超链接,许多有价值...如本例,用户希望看到真正的邮件地址,可是它们都被包含在B列的超链接中,没有显示
本教程将探讨如何使用Perl从网页中提取超链接并收集所需数据。首先,我们需要了解Perl的基础语法,然后学习如何利用Perl的LWP(Library for WWW in Perl)模块来获取网页源码,接着是HTML解析库如HTML::TreeBuilder...
Excel文件中的超链接是连接到外部资源的有效工具,如其他工作簿、网页或本地文件。然而,当这些外部文件的位置发生变化时,超链接就会失效,给用户带来不便。"Excel文件超链接修复器"就是为了解决这个问题而设计的。...
超链接是由HTML中的`<a>`标签创建的,用于在不同的网页之间建立连接。它通常包含两个部分:`href`属性,定义了链接的目标地址,以及显示的文本,即链接的内容。 在C#中,我们可以使用字符串处理方法来查找并替换...
本文旨在介绍如何利用HtmlParser这一开源工具来高效地提取网页中的关键信息,并将其存储到SQL数据库中,以为后续的数据分析工作做准备。 #### 二、HtmlParser简介 HtmlParser是一个轻量级、快速且易于使用的开源库...
以上就是使用C#获取网页超链接地址及其详细信息的基本步骤,以及如何与SQL数据库进行交互。在实际应用中,你可能还需要考虑其他因素,如异步处理、错误处理、反爬虫策略以及更复杂的HTML解析需求。在开发过程中,...
在本篇内容中,我们将深入了解如何使用Visual Basic(VB)来提取网页中的超链接信息。这段代码展示了如何通过VBScript与IE WebBrowser控件交互来实现这一目标。 #### 一、核心概念介绍 1. **WebBrowser 控件**:这...
利用DOM-TREE模型对网页进行表示 对原始网页进行修正缺省标签的补充等 利用网页正文提取方法对网页进行正文提取,去除网页中的噪声信息,提取出网页中的正文、相关超链接
超链接在Excel中是一种功能,它可以将单元格与网页、文件或电子邮件地址关联,点击后可以直接跳转到对应的目标。 首先,我们需要理解Apache POI中处理Excel超链接的基本概念。在POI API中,`org.apache.poi.ss....
网页链接提取精灵是一款专门设计用于从指定网站中批量提取所有URL链接的工具。这款软件能够高效地抓取网站导航和目录站中的各个网址,而不会下载网页的实际内容,这对于网络爬虫开发、网站分析或者SEO优化等场景非常...