C#快速获取指定网页源码的几种方式,并通过字符串截取函数 或 正则 取指定内容(IP)
//只获取网页源码开始到标题位目的进行测试
//第一种方式经过测试,稍微快点
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)的更多相关文章
- C#获取指定网页源码的几种方法
// WebClient private string GetWebClient(string url) { string strHTML = ""; WebClient myWe ...
- github下载源码的三种方式
从github上下载源码的三种方式 CreationTime--2018年6月7日15点21分 Author:Marydon 1.情景展示 2.实现方式 方式一:直接点击"Downloa ...
- Python3.4 获取百度网页源码并保存在本地文件中
最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果 ...
- objectARX加载lisp函数、源码的一种方式
//感谢高飞鸟highflybird版主的思路以及研究. //先声明非公开函数acedEvaluateLisp extern int acedEvaluateLisp(const ACHAR*,str ...
- 免费获取 IntelliJ IDEA 激活码的 6 种方式!
你还在满世界找 IntelliJ IDEA 激活码? 破解的不稳定,也是违法的,有安全风险还不一定,不建议大家使用来历不明的补丁. 今天栈长就分享免费获取 IntelliJ IDEA 的 6 种方式, ...
- PHP 通过fsockopen函数获取远程网页源码
<?php $fp = fsockopen("www.baidu.com", 80, &$errno, &$errstr, 10); if(!$fp) { e ...
- c#下载网页源码的两种方法
1.WebClient: System.Net.WebClient wc = new System.Net.WebClient(); Byte[] pageData = wc.DownloadData ...
- Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
Python3 Selenium WebDriver网页的前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 通过selenium webdr ...
- Selenium WebDriver-网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作
通过selenium webdriver操作网页前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 from selenium import ...
随机推荐
- python之cookbook-day04
第一章:数据结构和算法 1.4 查找最大或最小的N个元素 问题: 怎样从一个集合中获得最大或者最小的 N 个元素列表? 解决方案: heapq 模块有两个函数:nlargest() 和 nsmalle ...
- PAT 1110 Complete Binary Tree
Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...
- 美团 CodeM 复赛」城市网络
美团 CodeM 复赛」城市网络 内存限制:64 MiB时间限制:500 ms标准输入输出 题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接的连通图),首都为 11 ...
- MySql 内存表使用
MySql 内存表使用 内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制,以下是蓝草使用的一些感受. 1.heap对所有用户的连接是可见的,这 ...
- [cogs461] [网络流24题#10] 餐巾 [网络流,最小费用最大流]
建图:从源点向第一层连边,第一层表示当天用掉多少餐巾,第二层表示当天需要多少餐巾,所以注意购买餐巾的边容量为无穷大,要从源点开始连向第二层的点,每天可能有剩余,在第一层内表示为流入第二天的节点.具体见 ...
- 20180828Zabbix3使用percona-zabbix-templates监控MySQL
引用网址: http://blog.chinaunix.net/uid-16844903-id-3535535.html http://www.ywnds.com/?p=6199 https://ww ...
- P1331 海战 洛谷
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...
- ZooKeeper常用命令行工具及使用(转)
一.服务端 bin目录下常用的脚本解释 zkCleanup:清理Zookeeper历史数据,包括食物日志文件和快照数据文件 zkCli:Zookeeper的一个简易客户端 zkEnv:设置Zookee ...
- N天学习一个linux命令之ssh
用途 通过加密连接,远程登录主机和在远程主机执行命令,也可以用于转发x11和tcp,也可用于搭建VPN.第一次连接时,会弹出远程主机公钥指纹确认信息,通过这个方式防止中间人攻击. 用法 ssh [op ...
- Android颜色透明度数值一览
100% — FF 95% — F2 90% — E6 85% — D9 80% — CC 75% — BF 70% — B3 65% — A6 60% — 99 55% — 8C 50% — 80 ...