ASP.NET实现抓取网页中的链接

asp.net|链接|网页

输入一个地址,就可以把那个网页中的链接提取出来,下面这段代码可以轻松实现,主要的是用到了正则表达式。
  
  GetUrl.ASPx代码如下:
  
  <%@ Page Language="<a href="http://dev.21tx.com/language/vb/" target="_blank">VB</a>" CodeBehind="GetUrl.aspx.vb" AutoEventWireup="false" Inherits="aspx<a href="http://dev.21tx.com/web/" target="_blank">Web</a>.GetUrl" %>
  <html>
  <head>
  <META http-equiv="content-type" content="text/html; charset=gb2312">
  </head>
  <body>
  <form id="Form1" method="post" runat="server">
   <P>
   <asp:Label id="Label1" runat="server"></asp:Label>
   <asp:TextBox id="urlTextBox" runat="server" Width="336px">
   http://lucky_elove.www1.dotnetplayground.com/
   </asp:TextBox>
   <asp:Button id="scrapeButton" runat="server"></asp:Button>
   </P>
   <HR width="100%" SIZE="1">
   <P>
   <asp:Label id="TipResult" runat="server"></asp:Label>
   <asp:TextBox id="resultLabel" runat="server" TextMode="MultiLine"
   Width="100%" Height="400"></asp:TextBox>
   </P>
  </form>
  </body>
  </html>
  后代码GetUrl.aspx.vb如下:
  
  Imports System.IO
  Imports System.Net
  Imports System.Text
  Imports System.Text.RegularExpressions
  Imports System
  
  Public Class GetUrl
   Inherits System.Web.UI.Page
   Protected WithEvents Label1 As System.Web.UI.WebControls.Label
   Protected WithEvents urlTextBox As System.Web.UI.WebControls.TextBox
   Protected WithEvents scrapeButton As System.Web.UI.WebControls.Button
   Protected WithEvents TipResult As System.Web.UI.WebControls.Label
   Protected WithEvents resultLabel As System.Web.UI.WebControls.TextBox
  
  #Region " Web 窗体设计器生成的代码 "
  
   '该调用是 Web 窗体设计器所必需的。
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  
   End Sub
  
   Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
   'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
   '不要使用代码编辑器修改它。
   InitializeComponent()
   End Sub
  
  #End Region
  
   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   '在此处放置初始化页的用户代码
   Label1.Text = "请输入一个URL地址:"
   scrapeButton.Text = "分离Href链接"
   End Sub
   Private report As New StringBuilder()
   Private webPage As String
   Private countOfMatches As Int32
  
   Public Sub scrapeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
   webPage = GrabUrl()
   Dim myDelegate As New MatchEvaluator(AddressOf MatchHandler)
  
   Dim linksExpression As New Regex( _
   "\<a.+?href=['""](?!http\:\/\/)(?!mailto\:)(?>foundAnchor>[^'"">]+?)[^>]*?\>", _
   RegexOptions.Multiline Or RegexOptions.IgnoreCase Or RegexOptions.IgnorePatternWhitespace)
  
   Dim newWebPage As String = linksExpression.Replace(webPage, myDelegate)
  
   TipResult.Text = "<h2>从 " & urlTextBox.Text & "分离出的Href链接</h2>" & _
   "<b>找到并整理" & countOfMatches.ToString() & " 个链接</b><br><br>" & _
   report.ToString().Replace(Environment.NewLine, "<br>")
   TipResult.Text &= "<h2>整理过的页面</h2><script>window.document.title='抓取网页中的链接'</script>"
   resultLabel.Text = newWebPage
   End Sub
  
   Public Function MatchHandler(ByVal m As Match) As String
   Dim link As String = m.Groups("foundAnchor").Value
   Dim rToL As New Regex("^", RegexOptions.Multiline Or RegexOptions.RightToLeft)
   Dim col, row As Int32
   Dim lineBegin As Int32 = rToL.Match(webPage, m.Index).Index
  
   row = rToL.Matches(webPage, m.Index).Count
   col = m.Index - lineBegin
  
   report.AppendFormat( _
   "Link <b>{0}</b>, fixed at row: {1}, col: {2}{3}", _
   Server.HtmlEncode(m.Groups(0).Value), _
   row, _
   col, _
   Environment.NewLine _
   )
   Dim newLink As String
   If link.StartsWith("/") Then
   newLink = link.Substring(1)
   Else
   newLink = link
   End If
  
   countOfMatches += 1
   Return m.Groups(0).Value.Replace(link, newLink)
   End Function
  
   Private Function GrabUrl() As String
   Dim wc As New WebClient()
   Dim s As Stream = wc.OpenRead(urlTextBox.Text)
   Dim sr As StreamReader = New StreamReader(s, System.Text.Encoding.Default)
   GrabUrl = sr.ReadToEnd
   s.Close()
   wc.Dispose()
   End Function
  
  End Class

时间: 2024-09-20 15:01:35

ASP.NET实现抓取网页中的链接的相关文章

php结合正则批量抓取网页中邮箱地址

  php如何抓取网页中邮箱地址,下面我就给大家分享一个用php抓取网页中电子邮箱的实例. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $url='http://www.3lian.net'; //要采集的网址 $content=file_get_contents($url); //echo $content; function getEmail($str) { //$pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z

求教如何通过python抓取网页中表格信息

问题描述 求教如何通过python抓取网页中表格信息 刚刚开始学习python 不清楚如何通过python抓取网页中的表格信息 比如给定一个student.html 里面有学号.姓名.性别等信息 怎么样写才能够输入学号 读出其他信息? 解决方案 用正则表达式,表格数据放在table->tr->td中 解决方案二: 输入学号然后服务器在给你其他数据,应该是一个post的过程-你可以抓包看一下整个过程-至于提取特定的信息,你可以先看下整个表格的结构,再有针对性的写个正则表达式来提取出信息- 解决方

html-如何用java抓取网页隐藏音频链接

问题描述 如何用java抓取网页隐藏音频链接 我想用java抓取荔枝FM网站上所有的音频文件,但是直接查看网页源码发现找不到页面的音频链接http://www.lizhi.fm/#/25734/20075765977745926,但是我用谷歌的Developer Tools能找到这个链接http://cdn.lizhi.fm/audio/2015/05/16/20075765977745926_hd.mp3,我有点不知道怎么搞了,求帮忙看看什么情况 解决方案 搜索这个页面的data-url 解决

用ASP实现远程抓取网页到本地数据库

数据|数据库|网页     接到一个任务是把中国名牌网站的某些内容添加到我们的网站上,这些网站上有些页面是文章链接列表,点击链接会出现文章的详细内容显示页,根据这个规律,结合正则表达式,XMLHTTP技术,Jscript服务端脚本,以及ADO技术,写了一个小程序,把这些内容抓取到了本地数据库.抓取下来,然后就数据库对数据库导数据就比较方便了.先建立一个Access数据库,结构如下 Id自动编号标识,主键oldID数字旧数据编码Title标题文本Content备注内容 具体实现代码如下 <%@LA

怎样用Java代码抓取网页中的iframe中的数据

问题描述 最近老大让我做一个深度搜索功能,但是不知道怎样获取网页中iframe中的数据,求大神指教! 解决方案 解决方案二:看看吧解决方案三:iframe里面也是src的地址啊.解决方案四:有了src不就有地址了?继续下载啊,一个递归处理就行

抓取网页中的Silverlight数据初探

1.在浏览器中,打开Silverlight页面,点击右键,查看页面源代码:   2. 在html源代码中搜索"xap",很快就能定位出xap的位置.例如:<param name="Source" value="test/getdata.xap" /> 该value就是xap在服务器端的位置. 3.把它和网址域名地址拼接起来,来获取当前的xap文件.在地址栏输入:  http://www.moumou.com/test/getdata.

采集邮箱的php代码(抓取网页中的邮箱地址)_php技巧

复制代码 代码如下: <?php $url='http://www.jb51.net'; //这个网页里绝对含有邮件地址. $content=file_get_contents($url); //echo $content; function getEmail($str) {     //$pattern = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i&qu

python抓取网页中的图片示例_python

复制代码 代码如下: #coding:utf8import reimport urllibdef getHTML(url):    page = urllib.urlopen(url)    html = page.read()    return html def getImg(html,imgType):    reg = r'src="(.*?\.+'+imgType+'!slider)" '    imgre = re.compile(reg)    imgList = re.

php抓取网页

用php抓取页面的内容在实际的开发当中是非常有用的,如作一个简单的内容采集器,提取网页中的部分内容等等,抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,以下就是几种常用的用php抓取网页中的内容的方法. 1.file_get_contents PHP代码 <?php $url = "http://www.phpzixue.cn"; $contents = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent =