bg游戏资讯:取远程网页数据,R语言从小木虫网

作者: 策略游戏排行  发布:2019-10-07

一、从ULacrosseL读取并重返html树

修改版,由于取的网址多对应加了创新.小编就没发新贴了.
1,同三个客户(或浏览器)的比不上要求分享同八个变量积累空间,就称其为Session(会话)
Session内的变量保存在服务器中。
用SessionID以界别差异的Session(会话),因为不是四个顾客在央浼。

    1.1 Rcurl包

2, 威名昭著HTTP是无连接的,所以服务端和顾客端调换时说道好应用些什么标识来保证Session(会话)状态,于是出现了库克ie(也许您更熟习Cookie的别的用途)。那正是HTTP合同的境况保持机制,是正式,全体的浏览器都应有支持。为何不用IP标志?呵呵,因为有人用代理啊,前期的代 理服务器是很遍布的连到Internet的艺术。

       选取昂Coracurl包能够一本万利的向服务器发出央浼,捕获U途胜I,get 和 post 表单。比奔驰G级 socktet连接要提供越来越高品位的并行,何况帮助FTP/FTPS/TFTP,SSL/HTTPS,telnet 和cookies等。本文用到的函数是basicTextGatherer和getUEvoqueL。想详细询问那几个包的可以点击参谋资料的链接。

So, 在库克ie中放置一个近乎于SessionID的Value,同三个客商端在与服务端交互式,该ID便被过往传递,服务端便可依此建构若干变量,就是Session变量。差别的客商端因为SessionID差异,所以访谈服务器时获得的Session变量就分歧。

        R命令:

表明原理服务器的Session会在客商端发生一时CEOKIESS.
APS.NET网址就能够生成ASP.NET_SessionId=hjguqsn34ai3h3aattozr2fy
PHP,JSP网址生成的JSESSIONID=4D9D2F0B65C77385C43CE4EE22D0536E
正是看怎么样服务器而以
取了登入成功后的首席营业官KIESS,只要Computer不清空COOKIESS,那就能够做成免登录了.
换句话AComputer的COOKIESS,不可能在B计算机上用.
工具WPE之类的互连网探嗅器.
先记下贰次得逞登录时所发送的新闻.
找新闻中的POST,和GET
bg游戏资讯 1bg游戏资讯 2

        h <- basicTextGatherer( )   # 查看服务器再次回到的头新闻
        txt <- getURL(url, headerfunction = h$update,.encoding="UTF-8...")  # 重临字符串情势html

那英特网打资料都没有完好的资料非常是验证码登入。

       参数url即为须要拜谒的url这里参数用headerfunction用到上一条命令归来的头信息,.encoding钦点网页的编码方式为“UTF-8"。

其实自身这都是从网络采摘整理出来的的。做的不是太好。

       网页的编码情势有无尽,平常采取UTF-8,一些华语网页编码形式为“gbk",能够在浏览器的网页代码查看恐怕getUKoleosL重返的字符串见到。

应用的八个WebClient,HttpWebRequest。NET的类分别做出八个静态类和动态类。

       小木虫网页代码查看

静态类GetHtml 接济平时的网页取多少和POET提交,但不能够补助验证码,自动识别网页编码也能够手动输入网页编码。可是最佳是手动输入这样会让程序少做运营代码。

                                  bg游戏资讯 3

System.Collections.Specialized.NameValueCollection PostVars =new System.Collections.Specialized.NameValueCollection()
PostVars.Add("uid","name");
PostVars.Add("pwd","123456");

      可见小木虫网页编码格局为gbk。

string tmphtml= GetStrHtmlPost(url,PostVars);

     1.2  XML包

动态类PostWeb 扶助验证码、验证客户、登入过会时有产生主任KIES字符串,第贰次运维程序时可透过组长KIES而并非再行登入。

       途睿欧语言XML包 具备读取也许创设XML(HTML)文件的效果与利益,可以当半夏件也支撑HTTP 或许 FTP ,也提供Xpath(XML路线语言)深入分析方法。此处函数htmlparse,将文件分析为XML恐怕HTML树,便于尤其数据的领取或许编辑。

PostWeb web=new PostWeb();

        R命令:

web.GetCode(验证码地址);

        htmlParse(file,asText=T,encoding="UTF-8"...) #参数file 即为XML可能HTML文件名只怕text,asText参数是T钦点file是text,encoding钦命网页编码格局。

string tmplogin=web.LoginPost("");

 

if(tmplogin.Contains(条件))

       这里我们供给读取网页,何况获得该网页的html树内容

{

        自定义函数download,输入strU奥迪Q3L,strU奥迪Q3L为网站,再次来到html树内容

string cookie= web.cookieHeader;//保存到文件中下一次直接付到类就可免登录

            download <- function(strURL){
              h <- basicTextGatherer( )# 查看服务器再次来到的头音讯
              txt <- getURL(strURL, headerfunction = h$update,.encoding="gbk") ## 字符串情势
               htmlParse(txt,asText=T,encoding="gbk")      #选拔gbk实行网页的分析
             }

bg游戏资讯:取远程网页数据,R语言从小木虫网页批量提取考研调剂信息。web.GetPage("", "");

二、获得四个网页全数的U昂CoraL

}

    临时候大家须要步向各样网页上的子链接取剖析数据,这一年可以用到XML包的getHTMLLinks函数。

 

    R命令:

PostWeb web=new PostWeb();

        getHTMLLinks(doc,  xpQuery = "//a/@href"...) #doc为剖判后的HTML树文件,xpQuery内定想相配的Xpath成分(上面会详细讲一些Xpath基础)。

web.cookieHeader=cookie;//把保存文件中的cookie付到类中

    此处我们供给获得小木虫“导师招生”页面下的具有话题链接。

web.GetPage("", "");

    2.1 首先我们要收获导师招生的第一页,第二页,第三页,以至到最后一页的网站。

bg游戏资讯 4
bg游戏资讯 5using System;
bg游戏资讯 6using System.Collections.Generic;
bg游戏资讯 7using System.Text;
bg游戏资讯 8using System.Net;
bg游戏资讯 9using System.Text.RegularExpressions;
bg游戏资讯 10using System.IO;
bg游戏资讯 11using System.IO.Compression;
bg游戏资讯 12
bg游戏资讯 13namespace Manager.Net.Html
bg游戏资讯 14{
bg游戏资讯 15    #region  HTML相关类
bg游戏资讯 16    /// <summary>
bg游戏资讯 17    /// HTML相关
bg游戏资讯 18    /// </summary>
bg游戏资讯 19    public class CHtml
bg游戏资讯 20    {
bg游戏资讯 21      
bg游戏资讯 22        #region 过滤 Sql 语句字符串中的注入脚本
bg游戏资讯 23        /// <summary>
bg游戏资讯 24        /// 过滤 Sql 语句字符串中的注入脚本
bg游戏资讯 25        /// </summary>
bg游戏资讯 26        /// <param name="source">传入的字符串</param>
bg游戏资讯 27        /// <returns></returns>
bg游戏资讯 28        public static string FilterSql(string source)
bg游戏资讯 29        {
bg游戏资讯 30            //单引号替换到多少个单引号
bg游戏资讯 31            source = source.Replace("'", "''");
bg游戏资讯 32            source = source.Replace(""", "“");
bg游戏资讯 33            source = source.Replace("|", "|");
bg游戏资讯 34            //半角封号轮换为全角封号,幸免多语句推行
bg游戏资讯 35            source = source.Replace(";", ";");
bg游戏资讯 36
bg游戏资讯 37            //半角括号轮换为全角括号
bg游戏资讯 38            source = source.Replace("(", "(");
bg游戏资讯 39            source = source.Replace(")", ")");
bg游戏资讯 40
bg游戏资讯 41            /**/
bg游戏资讯 42            ///////////////要用正则表明式替换,幸免字母大小写得景况////////////////////
bg游戏资讯 43
bg游戏资讯 44            //去除实行存款和储蓄过程的指令关键字
bg游戏资讯 45            source = source.Replace("Exec", "");
bg游戏资讯 46            source = source.Replace("Execute", "");
bg游戏资讯 47
bg游戏资讯 48            //去除系统存款和储蓄进度或扩张存款和储蓄进度关键字
bg游戏资讯 49            source = source.Replace("xp_", "x p_");
bg游戏资讯 50            source = source.Replace("sp_", "s p_");
bg游戏资讯 51
bg游戏资讯 52            //幸免16进制注入
bg游戏资讯 53            source = source.Replace("0x", "0 x");
bg游戏资讯 54
bg游戏资讯 55            return source;
bg游戏资讯 56        }
bg游戏资讯 57
bg游戏资讯 58        #endregion
bg游戏资讯 59
bg游戏资讯 60        #region 输出HTML
bg游戏资讯 61        /// <summary>
bg游戏资讯 62        /// 输出HTML
bg游戏资讯 63        /// </summary>
bg游戏资讯 64        /// <param name="Stream">流</param>
bg游戏资讯 65        /// <param name="Encod">编码</param>
bg游戏资讯 66        /// <returns></returns>
bg游戏资讯 67        public static string HtmlStr(System.IO.Stream Stream, Encoding Encod)
bg游戏资讯 68        {
bg游戏资讯 69
bg游戏资讯 70            System.IO.StreamReader sr;
bg游戏资讯 71            if (Encod != null)
bg游戏资讯 72            {
bg游戏资讯 73                sr = new System.IO.StreamReader(Stream, Encod);
bg游戏资讯 74                return sr.ReadToEnd();
bg游戏资讯 75            }
bg游戏资讯 76            else
bg游戏资讯 77            {
bg游戏资讯 78bg游戏资讯:取远程网页数据,R语言从小木虫网页批量提取考研调剂信息。                sr = new System.IO.StreamReader(Stream, Encoding.Default);
bg游戏资讯 79                return sr.ReadToEnd();
bg游戏资讯 80
bg游戏资讯 81            }
bg游戏资讯 82
bg游戏资讯 83        }
bg游戏资讯 84        #endregion
bg游戏资讯 85
bg游戏资讯 86        #region 核算客商提交的UPAJEROL参数字符里面是不是有违规字符,假如有则赶回True.幸免SQL注入.
bg游戏资讯 87        /// <summary>
bg游戏资讯 88        /// 查验客商提交的ULX570L参数字符里面是或不是有违规字符,假如有则赶回True.幸免SQL注入.
bg游戏资讯 89        /// </summary>
bg游戏资讯 90        /// <param name="str">(string)</param>
bg游戏资讯 91        /// <returns>bool</returns>
bg游戏资讯 92        public static bool VerifyString(string str)
bg游戏资讯 93        {
bg游戏资讯 94            string strTmp = str.ToUpper();
bg游戏资讯 95            if (strTmp.IndexOf("SELECT ") >= 0 || strTmp.IndexOf(" AND ") >= 0 || strTmp.IndexOf(" OR ") >= 0 ||
bg游戏资讯 96                strTmp.IndexOf("EXEC ") >= 0 || strTmp.IndexOf("CHAR(") >= 0)
bg游戏资讯 97            {
bg游戏资讯 98                return true;
bg游戏资讯 99            }
bg游戏资讯 100
bg游戏资讯 101            strTmp.Replace("'", "'").Replace(";", ";");
bg游戏资讯 102            return false;
bg游戏资讯 103        }
bg游戏资讯 104        #endregion
bg游戏资讯 105
bg游戏资讯 106        #region 匹配页面包车型客车图形地址
bg游戏资讯 107        /// <summary>
bg游戏资讯 108        /// 相配页面包车型地铁图纸地址
bg游戏资讯 109        /// </summary>
bg游戏资讯 110        /// <param name="HtmlCode"></param>
bg游戏资讯 111        /// <param name="imgHttp">要补充的;
bg游戏资讯 112        /// <returns></returns>
bg游戏资讯 113        public static string GetImgSrc(string HtmlCode, string imgHttp)
bg游戏资讯 114        {
bg游戏资讯 115            string MatchVale = "";
bg游戏资讯 116            string Reg = @"<img. ?>";
bg游戏资讯 117            foreach (Match m in Regex.Matches(HtmlCode.ToLower(), Reg))
bg游戏资讯 118            {
bg游戏资讯 119                MatchVale  = GetImg((m.Value).ToLower().Trim(), imgHttp)   "|";
bg游戏资讯 120            }
bg游戏资讯 121
bg游戏资讯 122            return MatchVale;
bg游戏资讯 123        }
bg游戏资讯 124        #endregion
bg游戏资讯 125
bg游戏资讯 126        #region 相配<img src="" />中的图片路线实际上链接
bg游戏资讯 127        /// <summary>
bg游戏资讯 128        /// 匹配<img src="" />中的图片路线实际上链接
bg游戏资讯 129        /// </summary>
bg游戏资讯 130        /// <param name="ImgString"><img src="" />字符串</param>
bg游戏资讯 131        /// <returns></returns>
bg游戏资讯 132bg游戏资讯:取远程网页数据,R语言从小木虫网页批量提取考研调剂信息。        public static string GetImg(string ImgString, string imgHttp)
bg游戏资讯 133        {
bg游戏资讯 134            string MatchVale = "";
bg游戏资讯 135            string Reg = @"src=. .(bmp|jpg|gif|png|)";
bg游戏资讯 136            foreach (Match m in Regex.Matches(ImgString.ToLower(), Reg))
bg游戏资讯 137bg游戏资讯:取远程网页数据,R语言从小木虫网页批量提取考研调剂信息。            {
bg游戏资讯 138                MatchVale  = (m.Value).ToLower().Trim().Replace("src=", "");
bg游戏资讯 139            }
bg游戏资讯 140            if (MatchVale.IndexOf(".net") != -1 || MatchVale.IndexOf(".com") != -1 || MatchVale.IndexOf(".org") != -1 || MatchVale.IndexOf(".cn") != -1 || MatchVale.IndexOf(".cc") != -1 || MatchVale.IndexOf(".info") != -1 || MatchVale.IndexOf(".biz") != -1 || MatchVale.IndexOf(".tv") != -1)
bg游戏资讯 141                return (MatchVale);
bg游戏资讯 142            else
bg游戏资讯 143                return (imgHttp   MatchVale);
bg游戏资讯 144        }
bg游戏资讯 145        #endregion
bg游戏资讯 146
bg游戏资讯 147        #region 获取页面包车型地铁链接正则
bg游戏资讯 148        /// <summary>
bg游戏资讯 149        /// 获取页面包车型大巴链接正则
bg游戏资讯 150        /// </summary>
bg游戏资讯 151bg游戏资讯:取远程网页数据,R语言从小木虫网页批量提取考研调剂信息。        /// <param name="HtmlCode"></param>
bg游戏资讯 152        /// <returns></returns>
bg游戏资讯 153        public static string GetHref(string HtmlCode)
bg游戏资讯 154        {
bg游戏资讯 155            string MatchVale = "";
bg游戏资讯 156            string Reg = @"(h|H)(r|R)(e|E)(f|F) *= *('|"")?((w|\|/|.|:|-|_) )[S]*";
bg游戏资讯 157            foreach (Match m in Regex.Matches(HtmlCode, Reg))
bg游戏资讯 158            {
bg游戏资讯 159                MatchVale  = (m.Value).ToLower().Replace("href=", "").Trim()   "|";
bg游戏资讯 160            }
bg游戏资讯 161            return MatchVale;
bg游戏资讯 162        }
bg游戏资讯 163        #endregion
bg游戏资讯 164
bg游戏资讯 165        #region 去HTML标记
bg游戏资讯 166        /// <summary>
bg游戏资讯 167        /// 去HTML标记
bg游戏资讯 168        /// </summary>
bg游戏资讯 169        /// <param name="strhtml">HTML页面</param>
bg游戏资讯 170        /// <returns></returns>
bg游戏资讯 171        public static string RemoveHTML(string strhtml)
bg游戏资讯 172        {
bg游戏资讯 173            string stroutput = strhtml;
bg游戏资讯 174            Regex regex = new Regex(@"<[^>] >|</[^>] >");
bg游戏资讯 175            stroutput = regex.Replace(stroutput, "");
bg游戏资讯 176            return stroutput.Trim();
bg游戏资讯 177        }
bg游戏资讯 178        #endregion
bg游戏资讯 179
bg游戏资讯 180        /// <summary>
bg游戏资讯 181        /// 去中文
bg游戏资讯 182        /// </summary>
bg游戏资讯 183        /// <param name="strhtml">HTML页面</param>
bg游戏资讯 184        /// <returns></returns>
bg游戏资讯 185        public static string RemoveChinese(string strhtml)
bg游戏资讯 186        {
bg游戏资讯 187            string stroutput = strhtml;
bg游戏资讯 188            Regex regex = new Regex(@"[u4e00-u9fa5]");
bg游戏资讯 189            stroutput = regex.Replace(stroutput, "");
bg游戏资讯 190            return stroutput.Trim();
bg游戏资讯 191        }
bg游戏资讯 192        #region 去UBB标记
bg游戏资讯 193        /// <summary>
bg游戏资讯 194        /// 去UBB标记
bg游戏资讯 195        /// </summary>
bg游戏资讯 196        /// <param name="strhtml">HTML页面</param>
bg游戏资讯 197        /// <returns></returns>
bg游戏资讯 198        public static string RemoveUBB(string strhtml)
bg游戏资讯 199        {
bg游戏资讯 200            string stroutput = strhtml;
bg游戏资讯 201            Regex regex = new Regex(@"[[^[[]]*]");
bg游戏资讯 202            stroutput = regex.Replace(stroutput, "");
bg游戏资讯 203            return stroutput.Trim();
bg游戏资讯 204        }
bg游戏资讯 205        #endregion
bg游戏资讯 206
bg游戏资讯 207        #region 去UBB和HTML标记
bg游戏资讯 208        /// <summary>
bg游戏资讯 209        /// 去UBB和HTML标记
bg游戏资讯 210        /// </summary>
bg游戏资讯 211        /// <param name="strhtml">HTML页面</param>
bg游戏资讯 212        /// <returns></returns>
bg游戏资讯 213        public static string RemoveUBBHTML(string strhtml)
bg游戏资讯 214        {
bg游戏资讯 215
bg游戏资讯 216            return RemoveUBB(RemoveHTML(strhtml));
bg游戏资讯 217        }
bg游戏资讯 218        #endregion
bg游戏资讯 219
bg游戏资讯 220        #region 取网页编码
bg游戏资讯 221        /// <summary>
bg游戏资讯 222        /// 取网页编码
bg游戏资讯 223        /// </summary>
bg游戏资讯 224        /// <param name="strHtml">HTML页面</param>
bg游戏资讯 225        /// <returns>再次回到编码</returns>
bg游戏资讯 226        public static Encoding GetEncoding(string strHtml)
bg游戏资讯 227        {
bg游戏资讯 228
bg游戏资讯 229            string pattern = @"(?i)bcharset=(?<charset>[-a-zA-Z_0-9] )";
bg游戏资讯 230            string charset = Regex.Match(strHtml, pattern).Groups["charset"].Value;
bg游戏资讯 231            if (charset.Length <= 0)
bg游戏资讯 232            {
bg游戏资讯 233                if (strHtml.Contains("charset=""))
bg游戏资讯 234                    charset = Manager.Text.StringEx.GetStringMiddle(strHtml, "charset="", """);
bg游戏资讯 235
bg游戏资讯 236            }
bg游戏资讯 237            if (charset.Length <= 0)
bg游戏资讯 238            {
bg游戏资讯 239                if (strHtml.Contains("charset="))
bg游戏资讯 240                    charset = Manager.Text.StringEx.GetStringMiddle(strHtml, "charset=", """);
bg游戏资讯 241            }
bg游戏资讯 242            if (charset.Length <= 0)
bg游戏资讯 243            {
bg游戏资讯 244                charset = Encoding.UTF8.BodyName;
bg游戏资讯 245            }
bg游戏资讯 246            try
bg游戏资讯 247            {
bg游戏资讯 248                return Encoding.GetEncoding(charset);
bg游戏资讯 249            }
bg游戏资讯 250            catch (Exception)
bg游戏资讯 251            {
bg游戏资讯 252
bg游戏资讯 253                return Encoding.Default;
bg游戏资讯 254            }
bg游戏资讯 255
bg游戏资讯 256
bg游戏资讯 257
bg游戏资讯 258        }
bg游戏资讯 259        #endregion
bg游戏资讯 260
bg游戏资讯 261        #region 取IE版本
bg游戏资讯 262        /// <summary>
bg游戏资讯 263        /// 取IE版本
bg游戏资讯 264        /// </summary>
bg游戏资讯 265        /// <returns></returns>
bg游戏资讯 266        public static string GetIEVersion()
bg游戏资讯 267        {
bg游戏资讯 268            using (Microsoft.Win32.RegistryKey versionKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SoftwareMicrosoftInternet Explorer"))
bg游戏资讯 269            {
bg游戏资讯 270                String version = versionKey.GetValue("Version").ToString();
bg游戏资讯 271                return version;
bg游戏资讯 272            }
bg游戏资讯 273        }
bg游戏资讯 274        #endregion
bg游戏资讯 275
bg游戏资讯 276    }
bg游戏资讯 277    #endregion
bg游戏资讯 278
bg游戏资讯 279    #region 模拟网页提交数据类
bg游戏资讯 280    /// <summary>
bg游戏资讯 281    /// 模拟网页提交数据
bg游戏资讯 282    /// </summary>
bg游戏资讯 283    public class PostWeb
bg游戏资讯 284    {
bg游戏资讯 285        属性
bg游戏资讯 286
bg游戏资讯 287        相关设置
bg游戏资讯 288
bg游戏资讯 289        #region 验证码
bg游戏资讯 290        /// <summary>
bg游戏资讯 291        /// 验证码,并保留文件
bg游戏资讯 292        /// </summary>
bg游戏资讯 293        /// <param name="strU福睿斯L">验证码地址</param>
bg游戏资讯 294        /// <param name="dir">目录</param>
bg游戏资讯 295        /// <param name="filename">文件</param>
bg游戏资讯 296        /// <param name="imageFormat">格式</param>
bg游戏资讯 297        public void GetCode(string strURL, string dir, string filename, System.Drawing.Imaging.ImageFormat imageFormat)
bg游戏资讯 298        {
bg游戏资讯 299            string path = "";
bg游戏资讯 300            if (!String.IsNullOrEmpty(dir))
bg游戏资讯 301            {
bg游戏资讯 302
bg游戏资讯 303                System.IO.Directory.CreateDirectory(dir);
bg游戏资讯 304                path = dir   "\";
bg游戏资讯 305
bg游戏资讯 306            }
bg游戏资讯 307            string FileNamePath = path   filename;
bg游戏资讯 308            System.Drawing.Image code = GetCode(strURL);
bg游戏资讯 309            code.Save(FileNamePath, imageFormat);
bg游戏资讯 310            code.Dispose();
bg游戏资讯 311        }
bg游戏资讯 312
bg游戏资讯 313        /// <summary>
bg游戏资讯 314        /// 验证码,返回Bitmap
bg游戏资讯 315        /// </summary>
bg游戏资讯 316        /// <param name="strU宝马7系L">验证码地址</param>
bg游戏资讯 317        /// <returns></returns>
bg游戏资讯 318        public System.Drawing.Image GetCode(string strURL)
bg游戏资讯 319        {
bg游戏资讯 320            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 321            ProxySetting(myHttpWebRequest);
bg游戏资讯 322            NetworkCredentialSetting(myHttpWebRequest);
bg游戏资讯 323            myHttpWebRequest.Method = "GET";
bg游戏资讯 324            myHttpWebRequest.KeepAlive = true;
bg游戏资讯 325            CookieCollection myCookies = null;
bg游戏资讯 326            CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 327            myHttpWebRequest.CookieContainer = myCookieContainer;
bg游戏资讯 328            try
bg游戏资讯 329            {
bg游戏资讯 330
bg游戏资讯 331
bg游戏资讯 332                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 333                {
bg游戏资讯 334                    cookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(new Uri(strURL));
bg游戏资讯 335                    myCookies = response.Cookies;
bg游戏资讯 336                    System.Drawing.Image code = System.Drawing.Image.FromStream(response.GetResponseStream(), false, false);
bg游戏资讯 337                    return code;
bg游戏资讯 338
bg游戏资讯 339                }
bg游戏资讯 340            }
bg游戏资讯 341            catch
bg游戏资讯 342            {
bg游戏资讯 343
bg游戏资讯 344                return null;
bg游戏资讯 345            }
bg游戏资讯 346        }
bg游戏资讯 347        #endregion
bg游戏资讯 348
bg游戏资讯 349        public string GetCookies(string strURL)
bg游戏资讯 350        {
bg游戏资讯 351            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 352            myHttpWebRequest.Method = "Get";
bg游戏资讯 353            CookieCollection myCookies = null;
bg游戏资讯 354            CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 355            myHttpWebRequest.CookieContainer = new CookieContainer();
bg游戏资讯 356            try
bg游戏资讯 357            {
bg游戏资讯 358                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 359                {
bg游戏资讯 360                
bg游戏资讯 361                    cookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri);
bg游戏资讯 362                    myCookies = myHttpWebRequest.CookieContainer.GetCookies(myHttpWebRequest.RequestUri);
bg游戏资讯 363                    SetEncod(response.CharacterSet);
bg游戏资讯 364
bg游戏资讯 365
bg游戏资讯 366                    return System.Web.HttpUtility.HtmlDecode(System.Web.HttpUtility.UrlDecode(CHtml.HtmlStr(response.GetResponseStream(), tmpEncod))).Replace("r", "").Replace("n", "").Replace("t", "").Replace("  ", "");
bg游戏资讯 367              
bg游戏资讯 368                }
bg游戏资讯 369                   
bg游戏资讯 370
bg游戏资讯 371
bg游戏资讯 372
bg游戏资讯 373             
bg游戏资讯 374            }
bg游戏资讯 375            catch
bg游戏资讯 376            {
bg游戏资讯 377                cookieHeader = "";
bg游戏资讯 378                return "";
bg游戏资讯 379            }
bg游戏资讯 380        
bg游戏资讯 381        }
bg游戏资讯 382
bg游戏资讯 383        #region 登陆
bg游戏资讯 384        /// <summary>
bg游戏资讯 385        /// 成效描述:模拟登入页面,提交登陆数据举办登入,并记录Header中的cookie
bg游戏资讯 386        /// </summary>
bg游戏资讯 387        /// <param name="strU奥迪Q5L">登陆数据提交的页面地址</param>
bg游戏资讯 388        /// <param name="strArgs">客商登陆数据</param>
bg游戏资讯 389        /// <param name="strReferer">引用地址</param>
bg游戏资讯 390        /// <returns>能够回到页面内容或不回来</returns>
bg游戏资讯 391        public string LoginGet(string strURL, string strReferer)
bg游戏资讯 392        {
bg游戏资讯 393
bg游戏资讯 394            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 395            ProxySetting(myHttpWebRequest);
bg游戏资讯 396            NetworkCredentialSetting(myHttpWebRequest);
bg游戏资讯 397            WebConfig(myHttpWebRequest);
bg游戏资讯 398            myHttpWebRequest.Referer = strReferer;
bg游戏资讯 399            myHttpWebRequest.Method = "Get";
bg游戏资讯 400            CookieCollection myCookies = null;
bg游戏资讯 401            CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 402            myHttpWebRequest.CookieContainer = new CookieContainer();
bg游戏资讯 403           
bg游戏资讯 404            if (cookieHeader.Length > 0)
bg游戏资讯 405            {
bg游戏资讯 406                myCookieContainer.SetCookies(new Uri(strURL), cookieHeader);
bg游戏资讯 407                myHttpWebRequest.CookieContainer = myCookieContainer;
bg游戏资讯 408            }
bg游戏资讯 409
bg游戏资讯 410
bg游戏资讯 411
bg游戏资讯 412
bg游戏资讯 413            try
bg游戏资讯 414            {
bg游戏资讯 415                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 416                {
bg游戏资讯 417
bg游戏资讯 418                    cookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri);
bg游戏资讯 419                    myCookies = myHttpWebRequest.CookieContainer.GetCookies(myHttpWebRequest.RequestUri);
bg游戏资讯 420                    SetEncod(response.CharacterSet);
bg游戏资讯 421
bg游戏资讯 422
bg游戏资讯 423                    return System.Web.HttpUtility.HtmlDecode(System.Web.HttpUtility.UrlDecode(CHtml.HtmlStr(response.GetResponseStream(), tmpEncod))).Replace("r", "").Replace("n", "").Replace("t", "").Replace("  ", "");
bg游戏资讯 424                }
bg游戏资讯 425            }
bg游戏资讯 426            catch
bg游戏资讯 427            {
bg游戏资讯 428                cookieHeader = "";
bg游戏资讯 429                return "";
bg游戏资讯 430            }
bg游戏资讯 431        }
bg游戏资讯 432
bg游戏资讯 433
bg游戏资讯 434
bg游戏资讯 435        /// <summary>
bg游戏资讯 436        /// 作用描述:模拟登陆页面,提交登入数据实行登陆,并记录Header中的cookie
bg游戏资讯 437        ///  LoginPost("");
bg游戏资讯 438        /// </summary>
bg游戏资讯 439        /// <param name="strU哈弗L">登入数据提交的页面地址</param>
bg游戏资讯 440        /// <param name="strArgs">客商登入数据</param>
bg游戏资讯 441        /// <param name="strReferer">援用地址</param>
bg游戏资讯 442        /// <returns>能够再次回到页面内容或不回去</returns>
bg游戏资讯 443        public string LoginPost(string strURL, string strArgs, string strReferer)
bg游戏资讯 444        {
bg游戏资讯 445
bg游戏资讯 446            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 447            ProxySetting(myHttpWebRequest);
bg游戏资讯 448            NetworkCredentialSetting(myHttpWebRequest);
bg游戏资讯 449            WebConfig(myHttpWebRequest);
bg游戏资讯 450            myHttpWebRequest.Referer = strReferer;
bg游戏资讯 451            myHttpWebRequest.Method = "Post";
bg游戏资讯 452            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
bg游戏资讯 453            byte[] bs = Encoding.ASCII.GetBytes(strArgs);
bg游戏资讯 454            myHttpWebRequest.ContentLength = bs.Length;
bg游戏资讯 455
bg游戏资讯 456            try
bg游戏资讯 457            {
bg游戏资讯 458                CookieCollection myCookies = null;
bg游戏资讯 459                CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 460                myHttpWebRequest.CookieContainer = new CookieContainer();
bg游戏资讯 461                if (cookieHeader.Length > 0)
bg游戏资讯 462                {
bg游戏资讯 463                 
bg游戏资讯 464                    myCookieContainer.SetCookies(new Uri(strURL), cookieHeader);
bg游戏资讯 465                    myHttpWebRequest.CookieContainer = myCookieContainer;
bg游戏资讯 466                }
bg游戏资讯 467                using (Stream reqStream = myHttpWebRequest.GetRequestStream())
bg游戏资讯 468                {
bg游戏资讯 469                    reqStream.Write(bs, 0, bs.Length);
bg游戏资讯 470                }
bg游戏资讯 471
bg游戏资讯 472                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 473                {
bg游戏资讯 474
bg游戏资讯 475                    cookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri);
bg游戏资讯 476                    myCookies = myHttpWebRequest.CookieContainer.GetCookies(myHttpWebRequest.RequestUri);
bg游戏资讯 477                    SetEncod(response.CharacterSet);
bg游戏资讯 478                    return System.Web.HttpUtility.HtmlDecode(System.Web.HttpUtility.UrlDecode(CHtml.HtmlStr(response.GetResponseStream(), tmpEncod))).Replace("r", "").Replace("n", "").Replace("t", "").Replace("  ", "");
bg游戏资讯 479                }
bg游戏资讯 480            }
bg游戏资讯 481            catch(Exception ex){ cookieHeader = ""; return ""; }
bg游戏资讯 482        }
bg游戏资讯 483        #endregion
bg游戏资讯 484
bg游戏资讯 485        #region 取数据
bg游戏资讯 486        /// <summary>
bg游戏资讯 487        /// 功效描述:在PostLogin成功登陆后记录下Headers中的cookie,然后拿走此网站上别的页面包车型客车内容
bg游戏资讯 488        /// </summary>
bg游戏资讯 489        /// <param name="strUXC60L">获取网址的某页面包车型地铁地点</param>
bg游戏资讯 490        /// <param name="strReferer">引用的地点</param>
bg游戏资讯 491        /// <returns>重临页面内容</returns>
bg游戏资讯 492        public string GetPage(string strURL, string strReferer)
bg游戏资讯 493        {
bg游戏资讯 494
bg游戏资讯 495            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 496            ProxySetting(myHttpWebRequest);
bg游戏资讯 497            NetworkCredentialSetting(myHttpWebRequest);
bg游戏资讯 498            WebConfig(myHttpWebRequest);
bg游戏资讯 499            myHttpWebRequest.Method = "Get";
bg游戏资讯 500            if (!string.IsNullOrEmpty(strReferer))
bg游戏资讯 501                myHttpWebRequest.Referer = strReferer;
bg游戏资讯 502            myHttpWebRequest.Headers.Add("cookie:"   cookieHeader);
bg游戏资讯 503            CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 504
bg游戏资讯 505            try
bg游戏资讯 506            {
bg游戏资讯 507                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 508                {
bg游戏资讯 509                    SetEncod(response.CharacterSet);
bg游戏资讯 510
bg游戏资讯 511                    return System.Web.HttpUtility.HtmlDecode(System.Web.HttpUtility.UrlDecode(CHtml.HtmlStr(response.GetResponseStream(), tmpEncod))).Replace("r", "").Replace("n", "").Replace("t", "").Replace("  ", "");
bg游戏资讯 512                }
bg游戏资讯 513            }
bg游戏资讯 514            catch
bg游戏资讯 515            {
bg游戏资讯 516                return "";
bg游戏资讯 517
bg游戏资讯 518            }
bg游戏资讯 519        }
bg游戏资讯 520
bg游戏资讯 521        /// <summary>
bg游戏资讯 522        /// 功效描述:在PostLogin成功登陆后记录下Headers中的cookie,然后拿走此网址上任何页面包车型客车源委
bg游戏资讯 523        /// </summary>
bg游戏资讯 524        /// <param name="strUPRADOL">获取网址的某页面的地址</param>
bg游戏资讯 525        /// <param name="strReferer">援用的地点</param>
bg游戏资讯 526        /// <returns>再次来到页面内容</returns>
bg游戏资讯 527        public string PostPage(string strURL, string strArgs, string strReferer)
bg游戏资讯 528        {
bg游戏资讯 529            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
bg游戏资讯 530            ProxySetting(myHttpWebRequest);
bg游戏资讯 531            NetworkCredentialSetting(myHttpWebRequest);
bg游戏资讯 532            WebConfig(myHttpWebRequest);
bg游戏资讯 533            myHttpWebRequest.Referer = strReferer;
bg游戏资讯 534            myHttpWebRequest.Method = "Post";
bg游戏资讯 535            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
bg游戏资讯 536            byte[] bs = Encoding.ASCII.GetBytes(strArgs);
bg游戏资讯 537            myHttpWebRequest.ContentLength = bs.Length;
bg游戏资讯 538            if (cookieHeader.Length > 0)
bg游戏资讯 539                myHttpWebRequest.Headers.Add("cookie:"   cookieHeader);
bg游戏资讯 540            CookieContainer myCookieContainer = new CookieContainer();
bg游戏资讯 541
bg游戏资讯 542            try
bg游戏资讯 543            {
bg游戏资讯 544                using (Stream reqStream = myHttpWebRequest.GetRequestStream())
bg游戏资讯 545                {
bg游戏资讯 546                    reqStream.Write(bs, 0, bs.Length);
bg游戏资讯 547                }
bg游戏资讯 548                using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
bg游戏资讯 549                {
bg游戏资讯 550
bg游戏资讯 551                    SetEncod(response.CharacterSet);
bg游戏资讯 552
bg游戏资讯 553                    return System.Web.HttpUtility.HtmlDecode(System.Web.HttpUtility.UrlDecode(CHtml.HtmlStr(response.GetResponseStream(), tmpEncod))).Replace("r", "").Replace("n", "").Replace("t", "").Replace("  ", "");
bg游戏资讯 554                }
bg游戏资讯 555            }
bg游戏资讯 556            catch
bg游戏资讯 557            {
bg游戏资讯 558
bg游戏资讯 559                return "";
bg游戏资讯 560            }
bg游戏资讯 561        }
bg游戏资讯 562        #endregion
bg游戏资讯 563
bg游戏资讯 564       
bg游戏资讯 565    }
bg游戏资讯 566    #endregion
bg游戏资讯 567
bg游戏资讯 568    #region 表态取网页数据
bg游戏资讯 569    /// <summary>
bg游戏资讯 570    /// 表态取网页数据
bg游戏资讯 571    /// </summary>
bg游戏资讯 572    public class GetHtml
bg游戏资讯 573    {
bg游戏资讯 574
bg游戏资讯 575
bg游戏资讯 576        /// <summary>
bg游戏资讯 577        /// 模拟提交表单POST
bg游戏资讯 578        /// System.Collections.Specialized.NameValueCollection PostVars =new System.Collections.Specialized.NameValueCollection()
bg游戏资讯 579        /// PostVars.Add("uid","name");
bg游戏资讯 580        /// PostVars.Add("pwd","123456");
bg游戏资讯 581        /// GetStrHtmlPost(url,PostVars)
bg游戏资讯 582        /// </summary>
bg游戏资讯 583        /// <param name="url">地址</param>
bg游戏资讯 584        /// <param name="PostVars">PostValue</param>
bg游戏资讯 585        /// <returns></returns>
bg游戏资讯 586        public static string GetStrHtmlPost(String url, System.Collections.Specialized.NameValueCollection PostVars)
bg游戏资讯 587        {
bg游戏资讯 588            if (PostVars == null)
bg游戏资讯 589                return "";
bg游戏资讯 590            System.Net.WebClient WebClientObj = new System.Net.WebClient();
bg游戏资讯 591
bg游戏资讯 592            string html;
bg游戏资讯 593            try
bg游戏资讯 594            {
bg游戏资讯 595                byte[] buf = WebClientObj.UploadValues(url, "POST", PostVars);
bg游戏资讯 596                //上面都没用啊,就地方一句话就足以了
bg游戏资讯 597                html = System.Text.Encoding.Default.GetString(buf);
bg游戏资讯 598                Encoding encoding = CHtml.GetEncoding(html);
bg游戏资讯 599                if (encoding == Encoding.UTF8) return html;
bg游戏资讯 600                return encoding.GetString(buf);
bg游戏资讯 601
bg游戏资讯 602            }
bg游戏资讯 603            catch
bg游戏资讯 604            {
bg游戏资讯 605
bg游戏资讯 606            }
bg游戏资讯 607
bg游戏资讯 608            return "";
bg游戏资讯 609
bg游戏资讯 610        }
bg游戏资讯 611
bg游戏资讯 612        /// <summary>
bg游戏资讯 613        /// 获取网页的HTML内容
bg游戏资讯 614        /// </summary>
bg游戏资讯 615        /// <param name="url">url</param>
bg游戏资讯 616        /// <returns></returns>
bg游戏资讯 617        public static string GetStrHtml(string url)
bg游戏资讯 618        {
bg游戏资讯 619            return GetStrHtml(url, null);
bg游戏资讯 620        }
bg游戏资讯 621
bg游戏资讯 622        /// <summary>
bg游戏资讯 623        ///  获取网页的HTML内容
bg游戏资讯 624        /// </summary>
bg游戏资讯 625        /// <param name="url">URL</param>
bg游戏资讯 626        /// <param name="encoding">Encoding</param>
bg游戏资讯 627        /// <returns></returns>
bg游戏资讯 628        public static string GetStrHtml(string url, Encoding encoding)
bg游戏资讯 629        {
bg游戏资讯 630            byte[] buf = new WebClient().DownloadData(url);
bg游戏资讯 631            if (encoding != null) return encoding.GetString(buf);
bg游戏资讯 632            string html = Encoding.UTF8.GetString(buf);
bg游戏资讯 633            encoding = CHtml.GetEncoding(html);
bg游戏资讯 634            if (encoding == Encoding.UTF8) return html;
bg游戏资讯 635            return encoding.GetString(buf);
bg游戏资讯 636        }
bg游戏资讯 637
bg游戏资讯 638    }
bg游戏资讯 639    #endregion
bg游戏资讯 640    
bg游戏资讯 641}
bg游戏资讯 642

        导师招生首页

 

                        bg游戏资讯 643

       导师招生第二页,第三页。

                      bg游戏资讯 644

                   bg游戏资讯 645

        开掘首页网站是     第几页   .html 

        于是网站大家得以手动编辑。

        strURLs=""

        n=50

        strURLs <- c(strURLs,paste(rep("""))

        strU雷克萨斯LCLs包罗了全数1到50页导师招生网页的网站。

    2.2赢得每一页导师招生里面多个话题的链接

             

        在教师职员和工人招生页面下,有一点无尽理电话题,我们须要取得各样话题的链接。

        用getHTMLLinks函数查看导师招生里面有着U奥迪Q5L,再对照话题网站。

 

        bg游戏资讯 646

       

        发掘话题网址是整合元素是 html/201702/11075436.html 类似的URL

        那时我利用先从教师的资质招生网页提取全数UEscortL,再相配 html * .html格式的UCR-VL,最终再前边加上 的策略。

        自定义greg函数用张永琛则相配,並且得到相配到的字符串。
            greg <- function(pattern,istring){
                gregout <- gregexpr(pattern,istring)   #pattern为协作方式,istring为待相配的字符串
                substr(istring,gregout[[1]],gregout[[1]] attr(gregout[[1]],'match.length')-1)
             }

         自定义extradress函数,用于提取strU卡宴L网页的中的 U奥德赛L ,最终管理回来各类话题网页的链接。

            extradress <- function(strURL){
                 prefix <- ""
                 pattern <- "html/[0-9/] .html"
                 links <- getHTMLLinks(strURL)
                 needlinks <- gregexpr(pattern,links)
                 needlinkslist <- list()
                for (i in which(unlist(needlinks)>0)){
                    preadress <- substr(links[i],needlinks[[i]],needlinks[[i]] attr(needlinks[[i]],'match.length')-1)
                    needlinkslist<- c(needlinkslist,list(preadress))
                   adresses <- lapply(needlinkslist,function(x)paste(prefix,x,sep=""))
                 }
                return (adresses)
                 }

     

三、从HTML树中获得大家所要的数码

    3.1 XML文书档案基本知识

    下边是小木虫的有个别html:

本文由bg游戏资讯发布于策略游戏排行,转载请注明出处:bg游戏资讯:取远程网页数据,R语言从小木虫网

关键词: R语言统计 R语言 抓取网页