正则抓取网页所有href和src
根据抓取的页面,用正则来匹配页面href和src
string UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:29.0) Gecko/20100101 Firefox/29.0";
string ContentType = ""; Uri strReqUrl = new Uri("http://m.lhrb.ufstone.net/");
protected void Application_BeginRequest(object sender, EventArgs e)
{ Uri u = new Uri(strReqUrl, Request.RawUrl);
byte[] b = getVerificationCode(u); //MemoryStream ms = new MemoryStream(b);
//Response.ClearContent();
//Response.ContentType = ContentType;
//Response.BinaryWrite(b); StringBuilder strHtml = new StringBuilder(Encoding.GetEncoding("gb2312").GetString(b));
StringBuilder sb = new StringBuilder();
GetHtmlUrl(ref strHtml);
Response.Write(strHtml.ToString());
Response.End();
}
public byte[] getVerificationCode(Uri url)
{
WebClient MyWebClient = new WebClient();
MyWebClient.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
MyWebClient.Headers.Add("Accept-Language", " zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
MyWebClient.Headers.Add("User-Agent", this.UserAgent);
MyWebClient.Credentials = CredentialCache.DefaultCredentials;
try
{
Byte[] pageData = MyWebClient.DownloadData(url.AbsoluteUri);
ContentType = MyWebClient.ResponseHeaders["Content-Type"];
return (pageData);
}
catch
{
return null;
}
}
void GetHtmlUrl(ref StringBuilder strHtml)
{
//string headstr = "(src|href)=", endstr = "(\")";
//string reg = @"(?<=" + headstr + ")(.*?)(?=" + endstr + ")"; string reg = "(src|href)\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))";
Regex r = new Regex(reg, RegexOptions.None);
Match match = r.Match(strHtml.ToString());
StringBuilder sb = new StringBuilder();
while (match.Success)
{
//sb.Append(match.Groups["url"].Value + "\n");//得到href值
//sb.Append(match.Groups["text"].Value + "\n");//得到<a><a/>中间的内容 sb.Append(match + "\n");//得到href值
match = match.NextMatch();
//try
//{
// Uri u = new Uri(strReqUrl, match.Value.Replace("\"", "").Replace("'", ""));
// strHtml.Replace(match.Value, @"/" + u.ToString().Replace(strReqUrl.ToString(), ""));
//}
//catch
//{
//}
}
}
正则抓取网页所有href和src的更多相关文章
- Asp.net 使用正则和网络编程抓取网页数据(有用)
Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...
- python分布式抓取网页
呵呵,前两节好像和python没多大关系..这节完全是贴代码, 这是我第一次写python,很多地方比较乱,主要就看看逻辑流程吧. 对于编码格式确实搞得我头大..取下来页面不知道是什么编码,所以先找c ...
- Python爬虫【三】利用requests和正则抓取猫眼电影网上排名前100的电影
#利用requests和正则抓取猫眼电影网上排名前100的电影 import requests from requests.exceptions import RequestException imp ...
- Python -- 网络编程 -- 简单抓取网页
抓取网页: urllib.request.urlopen(url).read().decode('utf-8') --- (百度是utf-8,谷歌不是utf-8,也不是cp936,ascii也不行 ...
- jsoup抓取网页+具体解说
jsoup抓取网页+具体解说 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目.我以前在 IBM DW 上发表过两篇关于 htmlparser 的文章.各自 ...
- Java 抓取网页中的内容【持续更新】
背景:前几天复习Java的时候看到URL类,当时就想写个小程序试试,迫于考试没有动手,今天写了下,感觉还不错 内容1. 抓取网页中的URL 知识点:Java URL+ 正则表达式 import jav ...
- C语言调用curl库抓取网页图片
思路是先用curl抓取网页源码,然后以关键字寻找出图片网址. #include <stdio.h> #include <stdlib.h> #include <str ...
- C语言调用curl库抓取网页图片(转)
思路是先用curl抓取网页源码,然后以关键字寻找出图片网址. 范例: #include <stdio.h> #include <stdlib.h> #include < ...
- Jumony快速抓取网页 --- Jumony使用笔记--icode
作者:郝喜路 个人主页:http://www.cnicode.com 博客地址:http://haoxilu.cnblogs.com 时间:2014年6月26日 19:25:02 ...
随机推荐
- HDU 4381 Grid
背包变形. 将操作分为了两类,可以分开处理. 可以dp处理出L[i]:L[i]=-1代表从左到右 i 长度不能被拼凑出来,L[i]!=-1表示从左到右 i 长度能被拼凑出,并且最小费用为L[i]. 反 ...
- Table隔行变色的JavaScript代码
<table id="datatable"> <tr> <td>脚本之家</td> </tr> <tr> & ...
- SOM聚类与Voroni图在验证码字符分割中的应用
http://www.docin.com/p-1300981517.html SOM聚类与Voroni图在验证码字符分割中的应用
- R语言笔记1--向量、数组、矩阵、数据框、列表
注释:R语言是区分大小写的 1.向量 R语言中可以将各种向量赋值为一个变量,这种赋值操作符就是等号“=”,也可以使用“<-”. 1)产生向量 (1)函数c() 例如:x1=c(2,4,6,8,0 ...
- why is agreement hard in a distributed system?
same question as: why is PAXOS necessary? 1, what if >1 nodes become leaders simultaneously? that ...
- velocity 教程
1,<title> $!{product.name} - $!{title} $!{about.title} - $!{title} $!{news.title} - $!{title} ...
- php过滤提交数据 防止sql注入攻击
规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据. ...
- freemarker中的list 前端模板
freemarker list (长度,遍历,下标,嵌套,排序)1. freemarker获取list的size : JavaArrayList<String> list = new Ar ...
- PHP文件相关函数试题
一.问答题 1.返回路径中的文件名部分的函数是什么? 2.改变文件模式的函数是什么? 3.拷贝文件的函数是什么? 4.返回路径中的目录部分的函数是什么? 5.将上传的文件移动到指定位置的函数是? 6. ...
- IOS tableViewCell单元格重用中的label重叠的问题
参考:http://zhidao.baidu.com/link?url=_oMUTo5SxUY6SBaxYLsIpN3i2sZ6SKG35MVlPJd2cNmUf9TGQFkKXX9EXwSwti0n ...