//只获取网页源码开始到标题位目的进行测试
//第一种方式经过测试,稍微快点
string url = "http://www.ip.cn";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
Encoding encode = System.Text.Encoding.UTF8;
StreamReader sr = new StreamReader(ReceiveStream, encode); string strResult = "";
Char[] read = new Char[];
int count = sr.Read(read, , );
while (count > )
{
String str = new String(read, , count);
strResult += str;
count = sr.Read(read, , );
if (strResult.IndexOf("</title>") != -)
{
break;
}
}
textBoxTest.Text = strResult; //第二种获取网页源码 WebClient MyClient = new WebClient();
MyClient.Credentials = CredentialCache.DefaultCredentials;
MyClient.Headers.Add("Host", "www.kuwo.cn");
MyClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
Byte[] pageData = MyClient.DownloadData(url);
//string pageHtml = Encoding.Default.GetString(pageData); //GB2312
string pageHtml = Encoding.UTF8.GetString(pageData); //UTF-8 //字符串截取,从网页源码中截取 两字符串中间信息
private string GetStr(string TxtStr, string FirstStr, string SecondStr)
{
if (FirstStr.IndexOf(SecondStr, ) != -)
return "";
int FirstSite = TxtStr.IndexOf(FirstStr, );
int SecondSite = TxtStr.IndexOf(SecondStr, FirstSite + );
if (FirstSite == - || SecondSite == -)
return "";
return TxtStr.Substring(FirstSite + FirstStr.Length, SecondSite - FirstSite - FirstStr.Length);
} //正则截取字符串 A.B之间
string title2 = Regex.Match(title, "(?<="+"A"+").*?(?="+"B"+")").Value;
//Regex.Match(sUrl, "(?<=A).*?(?=B)").Value; //自定义函数
private string MyGetTitle(string url, string endTag, string startStr, string endStr)
{
try
{
//HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "text/html;charset=UTF-8";
//通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
//若成功取得网页的内容,则以System.IO.Stream形式返回,
//若失败则产生ProtoclViolationException错 误。
//在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
Stream ReceiveStream = res.GetResponseStream();
//返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,
//并以StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
StreamReader sr = new StreamReader(ReceiveStream, Encoding.UTF8);
string strResult = "";
Char[] read = new Char[];
//Read(char[] buffer,int index,int count);
//从文件流的第index个位置开始读,到count个字符,把它们存到buffer中,
//然后返回一个正数,内部指针后移一位,保证下次从新的位置开始读。
int count = sr.Read(read, , );
while (count > )
{
String str = new String(read, , count);
strResult += str;
count = sr.Read(read, , );
if (strResult.IndexOf(endTag) != -) break;
}
res.Close();
ReceiveStream.Dispose();
return Regex.Match(strResult, "(?<=" + startStr + ").*?(?=" + endStr + ")").Value;
}
catch (Exception ex)
{
LogAdd(ListBoxDownLog, "异常:" + ex.Message);
throw;
} }

C#快速获取指定网页源码的几种方式,并通过字符串截取函数 或 正则 取指定内容(IP)的更多相关文章

  1. C#获取指定网页源码的几种方法

    // WebClient private string GetWebClient(string url) { string strHTML = ""; WebClient myWe ...

  2. github下载源码的三种方式

      从github上下载源码的三种方式 CreationTime--2018年6月7日15点21分 Author:Marydon 1.情景展示 2.实现方式 方式一:直接点击"Downloa ...

  3. Python3.4 获取百度网页源码并保存在本地文件中

    最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...

  4. objectARX加载lisp函数、源码的一种方式

    //感谢高飞鸟highflybird版主的思路以及研究. //先声明非公开函数acedEvaluateLisp extern int acedEvaluateLisp(const ACHAR*,str ...

  5. 免费获取 IntelliJ IDEA 激活码的 6 种方式!

    你还在满世界找 IntelliJ IDEA 激活码? 破解的不稳定,也是违法的,有安全风险还不一定,不建议大家使用来历不明的补丁. 今天栈长就分享免费获取 IntelliJ IDEA 的 6 种方式, ...

  6. PHP 通过fsockopen函数获取远程网页源码

    <?php $fp = fsockopen("www.baidu.com", 80, &$errno, &$errstr, 10); if(!$fp) { e ...

  7. c#下载网页源码的两种方法

    1.WebClient: System.Net.WebClient wc = new System.Net.WebClient(); Byte[] pageData = wc.DownloadData ...

  8. Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作

    Python3 Selenium WebDriver网页的前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 通过selenium webdr ...

  9. Selenium WebDriver-网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作

    通过selenium webdriver操作网页前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 from selenium import ...

随机推荐

  1. python爬虫10 | 网站维护人员:真的求求你们了,不要再来爬取了!!

    今天 小帅b想给大家讲一个小明的小故事 ... 话说 在很久很久以前 小明不小心发现了一个叫做 学习python的正确姿势 的公众号 从此一发不可收拾 看到什么网站都想爬取 有一天 小明发现了一个小黄 ...

  2. 基本数据类型:字符串(str)

    一.字符串的定义和创建 字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,' '或'' ''或''' '''中间包含的内容称之为字符串,总之加了引号的字符都被认为是字符串! 创建: > ...

  3. 洛谷 1486 郁闷的出纳员【Treap】

    [题意概述] 要求维护一个序列支持以下操作: 1,插入元素x: 2,把序列的所有元素加上x: 3,把序列的所有元素减去x,同时低于一个给定的下限的元素马上被删除: 4,询问序列中第k大的元素. [题解 ...

  4. oracle 增量备份恢复策略(基础知识)

    EXP和IMP是Oracle提供的一种逻辑备份工具.逻辑备份创建数据库对 象的逻辑拷贝并存入一个二进制转储文件.这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以 ...

  5. DOM对象属性(property)与HTML标签特性(attribute)

    HTML中property与attribute是极易混淆的两个概念.大多数时候这两个单词都翻译为"属性",为了区分二者,一般将property翻译为"属性",a ...

  6. Fibonacci数列(codevs 1250)

    题目描述 Description 定义:f0=f1=1, fn=fn-1+fn-2(n>=2).{fi}称为Fibonacci数列. 输入n,求fn mod q.其中1<=q<=30 ...

  7. MOS文章翻译

    http://blog.csdn.net/column/details/msdnchina.html?&page=1 http://blog.csdn.net/staricqxyz/artic ...

  8. linux下的C语言开发(gdb调试)

    原文: http://blog.csdn.net/feixiaoxing/article/details/7199643 用gdb调试多进程的程序会遇到困难,gdb只能跟踪一个进程(默认是跟踪父进程) ...

  9. Zoj 3535 Gao the String II (AC自己主动机+dp)

    题目大意: 用集合A中的串构造出一个串,使之让很多其它的setB中的串成为他的子串. 思路分析: 和 Codeforces 86C 几乎相同. 只是这里是要用A中的构造. 先用A 和 B的串构造一个自 ...

  10. 运用smali自己主动注入技术分析android应用程序行为

    如今android开发人员社区里,除了app开发外,还有非常多周边的工具类产品,比方安全.性能等,app产品 已经出现了巨无霸,可是工具类的产品.眼下还没有出现规模比較大的公司,大部分还处于创业阶段, ...