爬虫要用到的知识
所需步骤:获取对应url的html、解析html、提取有用的标签下的内容、相关内容存入数据库或保存到本地
所需知识点:一般爬虫工具、HtmlParser.net、正则表达式、js(jquery)、连接数据库技术
具体归纳如下:
1、[C#HttpHelper]类
增加url与解码的方法:
/// <summary> /// 根据指定的编码对RUl进行解码 /// </summary> /// <param name="text">要解码的字符串</param> /// <param name="encoding">要进行解码的编码方式</param> /// <returns></returns> public static string URLDecode(string text, Encoding encoding) { return HttpUtility.UrlDecode(text, encoding); } /// <summary> /// 根据指定的编码对URL进行编码 /// </summary> /// <param name="text">要编码的URL</param> /// <param name="encoding">要进行编码的编码方式</param> /// <returns></returns> public static string URLEncode(string text, Encoding encoding) { return HttpUtility.UrlEncode(text, encoding); }
HttpHelper类使用方法:
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get Timeout = 100000,//连接超时时间 可选项默认为100000 ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000 IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写 Cookie = "",//字符串Cookie 可选项 UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统 可选项有默认值 Accept = "text/html, application/xhtml+xml, */*",// 可选项有默认值 ContentType = "text/html",//返回类型 可选项有默认值 Referer = "http://www.sufeinet.com",//来源URL 可选项 }; item.Header.Add("测试Key1", "测试Value1"); item.Header.Add("测试Key2", "测试Value2"); //得到HTML代码 HttpResult result = http.GetHtml(item); //取出返回的Cookie string cookie = result.Cookie; //返回的Html内容 string html = result.Html; if (result.StatusCode == System.Net.HttpStatusCode.OK) { //表示访问成功,具体的大家就参考HttpStatusCode类 } //表示StatusCode的文字说明与描述 string statusCodeDescription = result.StatusDescription;
HttpHelper获取图片的方式:
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, ResultType = ResultType.Byte }; //得到HTML代码 HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { //表示访问成功,具体的大家就参考HttpStatusCode类 } //表示StatusCode的文字说明与描述 string statusCodeDescription = result.StatusDescription; //把得到的Byte转成图片 Image img = byteArrayToImage(result.ResultByte); } /// <summary> /// 字节数组生成图片 /// </summary> /// <param name="Bytes">字节数组</param> /// <returns>图片</returns> private Image byteArrayToImage(byte[] Bytes) { using (MemoryStream ms = new MemoryStream(Bytes)) { Image outputImg = Image.FromStream(ms); return outputImg; } }