C#HttpHelper实现了C#HttpWebRequest抓取时无视编码,无视证书,无视Cookie,并且实现的代理的功能,使用它您可以进行Get和Post请求,可以很方便 的设置Cookie,证书,代理,编码问题您不用管,因为类会自动为您识别网页的编码。
这个类是我以前写百度,Google,Soso,Sogou等网络蜘蛛时使用的,经过上千万个网站的测试,上万个网站抓取的例子总结出来的,中间的方法也是我实验了很久之后方案,所以大家可以放心使用。我不敢说100%,但是应该是99%的网站都没有问题,都可以无视编码,证书,和Cookie,如果你确实发现那个网站在使用本类过程中有问题,出现乱码,或者是获取不了,不能带Cookie,不能带证书等问题.
1.4正式版 更新
更新了很多高端问题,优化的请求方式,是一个新技术跨越的版本
1.3正式版更新
本次主要是修复了一些测试版本中的问题,大家可以放心使用
1.3测试版更新
本来对类的结构进行的重大修改增加了返回参数,并添加了相应的Cookie帮助解析类,大家去看看吧
1.2正式版 更新
与上个版本相比较只是增加了Header参数,可以直接输入一些不能用属性设置的请求参数,并对代码结构进行的整改,是比较稳定的一个版本。还加入了如何获取图片的方法
1.2测试版
本版本对Httphelper类的返回参数进行的修改,加入了HttpResult返回参数类。并对代理以及性能方面做了重要修改,比如(返回Byte类型,可传入Byte类型,文件类型等等)
1.1正式版
本版本是最早的一版,只实现的解决编码,证书等问题。不过也能满足大部分人的使用了
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到,
//取当前webBrowser登录后的Cookie值
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved);
//取出Cookie,当登录后才能取
private static string GetCookieString(string url)
{
// Determine the size of the cookie
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
{
if (datasize < 0)
return null;
// Allocate stringbuilder large enough to hold the cookie
cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
return null;
}
return cookieData.ToString();
}
普通浏览复制代码
/// <summary>
/// 过滤html标签
/// </summary>
/// <param name="strHtml">html的内容</param>
/// <returns></returns>
public static string StripHTML(string stringToStrip)
{
// paring using RegEx //
stringToStrip = Regex.Replace(stringToStrip, "</p(?:\s*)>(?:\s*)<p(?:\s*)>", "
", RegexOptions.IgnoreCase | RegexOptions.Compiled);
stringToStrip = Regex.Replace(stringToStrip, "
", "
", RegexOptions.IgnoreCase | RegexOptions.Compiled);
stringToStrip = Regex.Replace(stringToStrip, """, "''", RegexOptions.IgnoreCase | RegexOptions.Compiled);
stringToStrip = StripHtmlXmlTags(stringToStrip);
return stringToStrip;
}
private static string StripHtmlXmlTags(string content)
{
return Regex.Replace(content, "<[^>]+>", "", RegexOptions.IgnoreCase | RegexOptions.Compiled);
}
方法如上面所示直接调用StripHTML方法就行了
4.设置URl格式的问题
普通浏览复制代码
public static string URLDecode(string text)
{
return HttpUtility.UrlDecode(text, Encoding.Default);
}
public static string URLEncode(string text)
{
return HttpUtility.UrlEncode(text, Encoding.Default);
}
方法也是直接调用就行了一个加密一个解密大家可以直接使用