最近在做一个WP7的音乐播放器,在网络搜索功能中需要用到提取网页超链接。

在网上找到一个不错的例子;

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();// 过滤重复的URLforeach(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;}}

  

转载于:https://www.cnblogs.com/Angle-Louis/archive/2011/07/27/2118371.html

C#提取网页中的超链接相关推荐

  1. HtmlParser提取网页中的纯文本信息

    转载自   HtmlParser提取网页中的纯文本信息 HTMLParser 一个解析web页面的开源类库.           准备学习下搜索方面的技术,就学习了些网络爬虫的知识.最近一直在一个点上 ...

  2. 利用正则表达式提取网页中Table内的数据

    利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  3. Java解析网页中的超链接批量下载用

    目录 1. 使用场景 2. 找列表 3. 分析下载地址列表 4. 使用下载工具下载 5. 源代码 1. 使用场景 迅雷的批量下载功能不好用,还会把网页中的超链接的原文件给重命名,很烦. 另外,经常使用 ...

  4. 如何提取网页中的blob加密视频

    如何提取网页中的blob加密视频 一.场景 一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的: 视频网址:"blob:https://us.flu ...

  5. 正则表达式提取网页中的网址

    正则表达式提取网页中的网址,并用匿名函数 #coding=utf-8 import res="https://www.baidu.com/message.asp?id=35" re ...

  6. Delphi提取网页中的图片

    无意中,在csdn论坛中看到关于"提取网页中的图片资源"的帖子,特摘抄之. simonhehe提供相关代码如下: procedure TfrmMain.DomImg2Image(w ...

  7. 一次性提取网页中所有图片的代码

    一次性提取网页中所有图片的代码 打开有图片的网页,在地址栏中输入: javascript:Ai7Mg6P='';for%20(i7M1bQz=0;i7M1bQz<document.images. ...

  8. php提取网页mp3,怎么提取网页中的音乐|下载网页中的音乐 网页音乐提取工具及使用教程分享...

    相信很多人都比较了解怎么下载网页上的视频吧,那么现在怎么提取网页中的音乐或者说怎么下载网页中的音乐 ,嗯~ o(* ̄▽ ̄*)o ,不懂的孩纸,路过走过不要错过啦,快来看看小编分享的网页音乐提取工具及使 ...

  9. 快速提取网页中的文字

    有时需要提取网页中的文字.除了使用"复制+粘贴"的方法外,还有其他办法.          打开"https://www.easyscrape.xyz/"后,在 ...

最新文章

  1. nginx与mysql传输过程_某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...
  2. iOS开发中didSelectRowAtIndexPath tap事件响应延迟
  3. node 生成随机头像_唯一ID生成算法剖析
  4. services.xml应该放在项目的哪里_行车中手机支架到底应该放在哪里呢?出风口、方向盘、仪表台?...
  5. matlab能做深度图像的识别吗,Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类...
  6. jquey-整屏滚动的制作过程
  7. apt-get常见错误
  8. java z+_Java算法练习—— Z 字形变换
  9. 【深度学习-花书】第二章 线性代数
  10. 电脑主板线路连接图解_教你如何连接主板路线图文教程
  11. 电脑tdr太低是什么意思_威猫解惑丨新版Substance Painter出现TDR值太低警告的解决办法...
  12. 批量添加authorized_keys
  13. Biotin-PEG8-amine,2183447-27-8具有末端伯胺基的生物素化试剂
  14. JavaScript开发——文件夹的上传和下载
  15. JVM生态系统2018调查报道
  16. 分布式唯一ID几种生成方案
  17. 初级程序员必学Java 教程
  18. 热辊的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. python练习题,使用爬虫爬取百度百科内置BeautifulSoup安装方法
  20. 商务咖啡机实力推荐——Barsetto百胜图BAV01咖啡机

热门文章

  1. 使用LogParser分析IIS网站日志
  2. 寻仙服务器要维护多久,新寻仙正式服5.2.62.1版本更新公告
  3. MapReduce之Partitioner的理解
  4. (21)Xilinx FPGA开发软件(FPGA不积跬步101)
  5. (11)System Verilog对象复制
  6. (49)Verilog HDL SPI接收设计
  7. (04)System Verilog 常用数据类型示例
  8. 【蓝桥杯嵌入式】【STM32】12_2020_第十一届_蓝桥杯_嵌入式设计与开发项目_省赛
  9. 【STM32】关闭JTAG接口,引脚设置推挽输出
  10. OK6410开发板学习之一步一步实现精简BootLoader(BL1部分)