`
hipeace87
  • 浏览: 174352 次
  • 性别: Icon_minigender_1
  • 来自: 山东菏泽
社区版块
存档分类
最新评论

HttpWebRequest采集(一)

阅读更多

       现在采集程序最最常用到的就是火车头了,只要你会编写采集规则就能将网站上的数据抓下来居为已有。

       不过做为一个开发者,这样做起来也也感觉不爽。不能一次性解决需求。

       现在写一个简单的采集程序。

        由于WEB的开发语言很多,不同的语言做出的网站在采集规则的写法上也有不同。

       比如一般的分页就不会存在大的问题,多数还是以GET为主,如果碰到用.net开发的网站,在分页时会发现分页的连接上为javascript:__doPostBack('','');这种方式的,这个是以POST方式来实现分页的。

       今天先说一下简单的分页采集(以get方式获取),其它方式后续再写出来

 

 

      其实web的采集就是要模仿出一个浏览器出来去访问http服务器,将获取到的html代码解析出来。

     在C#中有多个方法来实现HTML的request,可以使用WebClient,httpwebrequest还可以使用webbrowser;

 

这里只说使用httpwebrequest的实现。

    这里在采集上还要有一个技巧,有些网站的URL规则可能根本就不需求你先来采集分页的页面就能直接采集你想要的内容。如很多个网站都是采用ID来显示最后的路径,例:http://www.aaaa.com/a/show.php?id=111111

 

   这样的采集就是直接访问URL就是,总之一句话,只有先取到了想要采集的页面URL才能取到想要的东西(相当的废话。。。)

不多说,先来代码

 public abstract class WebControler
    {
        #region ConstString
        protected string sUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
        protected string sContentType = "application/x-www-form-urlencoded";
        protected string sRequestEncoding = "utf-8";
        protected string sResponseEncoding = "utf-8";

        protected CookieContainer _cookieContainer = null;
        #endregion
        /// <summary>
        /// 了类中去继承,根据不同网站的验证方式实现登陆验证
        /// 以获取用户唯一标识的cookie
        /// </summary>
        protected virtual void CheckLogin()
        {
            _cookieContainer = new CookieContainer();
        }

        /// <summary>
        /// 读取访问URL所返回的HTML字符串
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string GetHtmlFromUrl(string url)
        {
            CheckLogin() ;
            WebRequest request = WebRequest.Create(url);
            HttpWebRequest httpRequest = request as HttpWebRequest;
            if (httpRequest == null)
            {
                throw new ApplicationException(
               string.Format("Invalid url string: {0}", url)
               );
            }
            //有些网站加入了限制,只有先从首页或验证页面访问才能访问,一般都记录到cookie中
           //这里就是将验证后的cookie容器赋给采集的client
            httpRequest.CookieContainer = _cookieContainer;
            httpRequest.UserAgent = sUserAgent;
            httpRequest.Accept = "*/*";
            httpRequest.Headers.Add("Accept-Language", "zh-cn");
            httpRequest.KeepAlive = true;
            httpRequest.Timeout = 10000;
            httpRequest.Method = "GET";

            HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse();
            string sResponse = string.Empty;
            if (response.StatusCode == HttpStatusCode.OK)
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
                {
                    sResponse = reader.ReadToEnd();
                    reader.Close();
                }
            }
            response.Close();
            return sResponse;
        }
    } 

    如果碰到要验证的网站抓取,只要先继承下这个类,将CheckLogin()方法重写就是

    如果是可以直接采集的网站,一个循环就去采吧,将返回的字符串再自己解析,取出自己有用的数据即可。

    对于html的解析可以参考Smglreader

 

先说这么多,后面有关POST数据再读取的相关方法和工具使用技巧请等待后续。。。。

 

写的不好,欢迎拍砖。。

 技术交流群:199703615

0
0
分享到:
评论

相关推荐

    C#(Csharp)多线程HTTP并发请求(HttpWebRequest)采集蜘蛛

    它会从待下载集合中取出第一个URL,将其移动到已下载集合,并创建一个HttpWebRequest对象,设置请求方法、接受类型、用户代理等属性,然后使用异步请求方法开始请求。 5. **异步请求处理**:在RequestState类中,...

    火车头7.6版采集https插件:网站报错System.Net.HttpWebRequest问题解决方案

    在这个场景下,我们遇到了一个特定的问题——"System.Net.HttpWebRequest"错误,这是在火车头7.6版本中进行HTTPS采集时可能会遇到的一个常见问题。下面将详细介绍这个问题的原因、解决方案以及提供的插件。 首先,`...

    HttpWebRequest采集(二)-- C#解析html

    在IT行业中,网络数据采集是一项重要的技能,尤其是在大数据分析、搜索引擎优化、网站监控等领域。本篇文章将深入探讨如何使用C#编程语言通过HttpWebRequest类来实现网页HTML的抓取和解析。HttpWebRequest是.NET框架...

    利用HttpWebRequest+HtmlAgilityPack进行数据采集

    本示例通过结合使用`HttpWebRequest`和`HtmlAgilityPack`库来实现这一功能,这在Web抓取、网页爬虫或者需要从网页提取特定信息的场景中非常常见。下面将详细介绍这两个关键组件及其在数据采集中的应用。 `...

    采集软件 .net 采集插件

    总结来说,"采集软件 .net 采集插件"是一种基于.NET框架的小巧而实用的数据采集工具,它允许用户方便地从互联网上抓取所需信息,而无需从零编写复杂的爬虫程序。随着技术的发展,这类软件可能会持续升级,以适应更...

    新闻自动采集系统

    新闻自动采集系统是一种高效的信息获取工具,主要用于自动化地从互联网上的各种新闻网站抓取、整理和存储信息。这种系统能够帮助用户快速获取大量新闻数据,为数据分析、舆情监控、研究项目等提供支持。本系统是用C#...

    文章自动采集系统,C#程序,CSHARP软件

    在IT行业中,数据采集是一项重要的任务,尤其对于内容丰富的网站,如新闻站点、论坛或者博客等,自动化的文章采集系统能极大地提高工作效率,减少人工操作的繁琐。本篇文章将深入探讨一个基于C#编程语言实现的文章...

    .net 内容采集源码

    .NET框架以其强大的功能和易用性,被广泛应用于各种软件开发,包括内容采集这一领域。本文将深入探讨.NET内容采集源码的相关知识点,帮助开发者理解和运用相关技术。 一、.NET框架基础 .NET框架是由微软公司开发的...

    BK信息采集系统(源码版.net2.0改进版)

    " BK信息采集系统(源码版.net2.0改进版) "是一个专为数据采集设计的应用程序,基于.NET Framework 2.0开发。这个系统经过了优化和改进,相较于之前的1.1版本,更适合使用Visual Studio 2005进行编辑和运行。此系统...

    asp.net(C#) 数据采集、抓取

    ASP.NET(C#)数据采集与抓取是一个关键的IT技术领域,主要涉及从网络上获取和处理非结构化或半结构化的数据。在本文中,我们将深入探讨这个主题,了解如何利用C#编程语言和ASP.NET框架进行高效的数据采集和抓取。 ...

    asp.net远程采集(组件和源码)

    在ASP.NET中进行远程数据采集是一项重要的任务,它涉及到网络通信、数据抓取和处理等多个技术领域。本资源提供了ASP.NET下进行远程采集所需的组件和源码,帮助开发者实现高效的数据获取和分析。 首先,我们要理解...

    C sharp 仿codefans自动采集系统

    "C# 仿CodeFans自动采集系统"是一个利用C#编程语言实现的,旨在模仿CodeFans网站功能的数据采集程序。这个系统的主要目标是高效、稳定地抓取并处理CodeFans网站上的信息,例如文章、讨论、代码片段等,以便进行数据...

    开源数据采集-DotNet写的

    开源数据采集是一个重要的技术领域,尤其对于IT从业者和开发者来说,掌握相关技能能极大地提升工作效率。这个开源项目是用DotNet编写的,这意味着它利用了微软的.NET框架,这是一个跨平台的开发工具集,用于构建各种...

    .net core并发请求发送HttpWebRequest的坑解决

    `HttpClientFactory`提供了一种更高效、更方便的方式来创建和管理`HttpClient`实例,它可以帮助我们更好地处理连接池,避免资源泄露,以及提高性能和可靠性。 在.NET Core的`Startup.cs`文件中,我们需要在`...

    OneCat平台的数据采集模块,.NetCore实现.zip

    OneCat平台的数据采集模块是这样的一个工具,它采用C#语言进行开发,并基于.NetCore框架,旨在高效、稳定地获取并处理各类数据。本文将深入探讨这个模块的设计原理、主要功能以及如何实现。 首先,让我们了解....

    C# 商圈数据采集代码

    在IT行业中,数据采集是一项重要的任务,特别是在商业分析和市场研究中。本项目"商圈数据采集代码"使用了C#编程语言,结合SQL Server 2005数据库管理系统和Visual Studio 2015开发环境,为我们提供了一个实用的数据...

    net采集资料集合

    使用C#进行数据采集时,可以结合HttpWebRequest、HttpClient等类进行网络请求,然后通过正则表达式、HTML解析库来解析和抽取数据。此外,可以利用ASP.NET的异步处理能力,提高大规模数据采集的性能。 4. **多线程、...

    网络信息智能采集系统.zip

    网络信息智能采集系统,顾名思义,是一种能够自动化地从互联网上抓取、处理和分析信息的软件工具。在信息化时代,数据是企业的核心资产,网络信息的实时获取和分析对于决策支持、市场研究、竞争情报等都具有至关重要...

    最新版本C#爬虫采集蜘蛛.rar

    C#(Csharp)多线程HTTP并发请求(HttpWebRequest)采集蜘蛛

    C#源码做的新浪博客采集器,仅供C#学习用

    标题中的"C#源码做的新浪博客采集器"指的是一个使用C#编程语言编写的程序,其功能是自动抓取和处理新浪博客上的信息。这样的工具通常用于数据分析、内容挖掘或者研究目的,它可以帮助用户批量获取博客文章的内容、...

Global site tag (gtag.js) - Google Analytics