c#抓取网页数据
2024-08-24 10:56:39
写了一个简单的抓取网页数据的小例子,代码如下:
//根据Url地址得到网页的html源码
private string GetWebContent(string Url)
{
string strResult = ""; ;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//声明一个HttpWebRequest请求
request.Timeout = ;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("GB2312");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch
{ }
return strResult;
}
//为了使用HttpWebRequest和HttpWebResponse,需填名字空间引用 //以下是程序具体实现过程:
protected void btn_Click(object sender, EventArgs e)
{
//要抓取的URL地址
string Url = "http://www.awtrip.com/";
//得到指定Url的源码
string strWebContent = GetWebContent(Url);
//Response.Write(strWebContent);
//取出和数据有关的那段源码
int iBodyStart = strWebContent.IndexOf("<body", );
int iStart = strWebContent.IndexOf("热门目的地旅游", iBodyStart);
int iTableStart = strWebContent.IndexOf("<ul", iStart);
int iTableEnd = strWebContent.IndexOf("</ul>", iTableStart);
string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + );
//生成HtmlDocument
WebBrowser webb = new WebBrowser();
webb.Navigate("about:blank");
HtmlDocument htmldoc = webb.Document.OpenNew(true);
htmldoc.Write(strWeb);
HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("li");
StringBuilder strlist = new StringBuilder();
foreach (HtmlElement tr in htmlTR)
{
strlist.AppendFormat(tr.GetElementsByTagName("a")[].InnerText+"$");
}
Response.Write(strlist.ToString().Remove(strlist.ToString().Length-));
////最后再插入数据库 }
引用:
using System.Net;
using System.IO;
using System.Text;
using System.Windows.Forms;
运行时可能为遇到“当前线程不在单线程单元中,因此无法实例化 ActiveX 控件”的问题,把aspx页面顶部的AutoEventWireup设置为ture就可以了
最新文章
- java中的hashSet和Treeset的分析
- 解决At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this log
- 在同一个机器中安装LoadRunner与QTP
- EF6 CodeFirst 启用Migration,常用命令
- Servlet主要的作用
- 怎样在osg中动态的设置drawable的最近最远裁剪面
- PAT1034;Head of a Gang
- final 关键字与安全发布 多线程中篇(十三)
- 关于C#的new与override
- 美团面试-canvas实现放射图
- docker+jenkins+maven简单部署
- ThinkPHP 5.2 出 RC1 版本 RC 是什么意思呢?
- php支付宝接口 的使用
- 如何恢复windows的exe文件的默认打开方式
- 【转】java comparator 升序、降序、倒序从源码角度理解
- 微信 audio 获取 duration 为 NaN 的解决方法
- linq Distinct 去除重复数据
- HackerRank - candies 【贪心】
- 在线升级python3.3版本
- OpenCV 3.0.0处理鱼眼镜头信息 - Fisheye camera model