当前位置:  编程技术>.net/c#/asp.net

c#远程html数据抓取实例分享

    来源: 互联网  发布时间:2014-10-24

    本文导语:  代码如下:///         /// 获取远程html        ///         ///         ///         ///         ///         ///         public static bool GetHttp(string url, string methed, string param, out string html)        {   ...

代码如下:

///
        /// 获取远程html
        ///
        ///
        ///
        ///
        ///
        ///
        public static bool GetHttp(string url, string methed, string param, out string html)
        {
            methed = methed.ToLower();

            if (param != null && methed == "get" && param.Length > 0)
            {
                url += "?" + param;
            }

            try
            {
                MSXML2.XMLHTTP mx = new MSXML2.XMLHTTPClass();

                mx.open(methed, url, false, null, null);

                if (param != null && methed == "post" && param.Length > 0)
                {
                    mx.setRequestHeader("Content-Length", param.Length.ToString());
                    mx.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                }

                mx.send(param);

                if (mx.readyState != 4)
                {
                    html = "远程连接失败:-4";
                    return false;
                }
                html = mx.responseText;
                return true;
            }
            catch (Exception ex)
            {
                html = "远程连接失败:"+ex.Message;
                return false;
            }
        }

        public static bool GetHttp1(string url, string methed, string param, string referer, string encode, out string html)
        {
            //return GetHttp(url,methed,param,out html);

            //string encode = "utf-8";
            //string methed = sendType.ToString();

            if (param != null && methed == "get" && param.Length > 0)
            {
                if (url.IndexOf("?") >= 0)
                {
                    url += "&" + param;
                }
                else
                {
                    url += "?" + param;
                }
            }

            try
            {
                HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(url);

                webreq.Proxy=null;
                webreq.Timeout = 1000 * 6;
                webreq.ContentType = "application/x-www-form-urlencoded";
                webreq.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0";

                //webreq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)";

                //谷歌的:User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
                //火狐的:User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
                //标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息

                //webreq.AllowAutoRedirect = false;

                //频繁请求一个网址时,过段时间就会出现“基础连接已经关闭”
                //webreq.KeepAlive = false;
                //webreq.ProtocolVersion = HttpVersion.Version10;

                if (referer.Length > 0)
                {
                    webreq.Referer = referer;
                }

                CookieContainer mycookies = new CookieContainer();
                webreq.CookieContainer = mycookies;

                //if (this.cookieList != null)
                //{
                //    webreq.CookieContainer.Add(this.GetCookies(webreq.RequestUri, this.cookieList));
                //}

                webreq.Method = methed;

                //post 开始
                if (param != null && methed == "post")
                {
                    byte[] arrbyte = Encoding.GetEncoding(encode).GetBytes(param);
                    webreq.ContentLength = arrbyte.Length;

                    Stream newStream = webreq.GetRequestStream();
                    newStream.Write(arrbyte, 0, arrbyte.Length);
                    newStream.Close();
                }
                //post 结束

 
                WebResponse w = webreq.GetResponse();

                //返回HTML
                using (HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse())
                {
                    using (Stream dataStream = webres.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(encode)))
                        {
                            html = reader.ReadToEnd();
                            //this.cookieList = webreq.CookieContainer.GetCookies(webreq.RequestUri);
                            webreq.Abort();//可能会解决卡住或阻塞问题
                        }
                    }
                }
            }
            catch (Exception ex)
            {

                html = "出现异常(HttpHelper.GetHTML),远程连接失败:" + ex.Message + " url:" + url;
                //System.Windows.Forms.MessageBox.Show(html);
                return false;
            }

            return true;
        }

    
 
 

您可能感兴趣的文章:

  • C#实现过滤html标签并保留a标签的方法
  • C#中除去所有在HTML元素中标记
  • C#实现压缩HTML代码的方法
  • c# 动态添加非标准html控件的代码
  • c#使用htmlagilitypack解析html格式字符串
  • C#中Html.RenderPartial与Html.RenderAction的区别分析
  • C#实现下载网页HTML源码的方法
  • C#将html table 导出成excel实例
  • C#中HTML字符转换函数分享
  • 提取HTML代码中文字的C#函数
  • 提取html中文字 C#自定义函数
  • c#使用nsoup解析html乱码解决方法分享 nsoup教程
  • 使用C#获取网页HTML源码的例子
  • c# 正则html标签剔除方法的实现代码
  • C#读取HTML文件内容写入记事本的代码
  • C#下解析HTML的两种方法介绍
  • C#使用MailAddress类发送html格式邮件的实例代码
  • C#正则表达式匹配HTML中的图片路径,图片地址代码
  • c#利用system.net发送html格式邮件
  • C#实现将PPT转换成HTML的方法
  • crawler4j抓取页面使用jsoup解析html时的解决方法
  • python抓取某汽车网数据解析html存入excel示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • HTML超文本标记语言教程及实例
  • php实例分享之html转为rtf格式
  • HTML 基础知识教程及代码实例
  • CodeIgniter框架实例之过滤HTML危险代码
  • HTML 标准颜色值实例代码表
  • jquery操作HTML5 的data-*的用法实例分享
  • PHPMailer发送HTML内容、带附件的邮件实例
  • jQuery中使用data()方法读取HTML5自定义属性data-*实例
  • C#.NET采用HTML模板发送电子邮件完整实例
  • Asp.net动态生成html页面的实例详解
  • jQuery设置与获取HTML、文本与值实例
  • jQuery设置与获取HTML,文本和值的简单实例
  • JQuery解析HTML、JSON和XML实例详解
  • 浅谈html中id和name的区别实例代码
  • Java中使用开源库JSoup解析HTML文件实例
  • python发送邮件的实例代码(支持html、图片、附件)
  • Jsoup解析HTML实例及文档方法详解
  • PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
  • java命名空间javax.swing.text.html类html.tag的类成员方法: html定义及介绍
  • 基于HTML5的幻灯片 html5slides
  • java命名空间javax.swing.text.html类html.tag的类成员方法: html.tag定义及介绍
  • 基于 KBEngine 的 HTML5 插件 kbengine_html5
  • java命名空间javax.swing.text.html类html.unknowntag的类成员方法: html.unknowntag定义及介绍
  • 让 IE 支持 HTML5 html5shim
  • java命名空间javax.swing.text.html类htmleditorkit.inserthtmltextaction的类成员方法: html定义及介绍
  • HTML文档格式化工具 HTML Tidy
  • java命名空间javax.swing.text.html类html的类成员方法: getallattributekeys定义及介绍
  • HTML5 在线工具 html5demos
  • java命名空间javax.swing.text.html.parser类dtd的类成员方法: html定义及介绍
  • 框架网页中如何使用sendredirect(a.html),使得a.html不显示在框架中,是整页显示!
  • java命名空间javax.swing.text.html类html.tag的类成员方法: comment定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3