首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

这几天都在搞网页抓取工具 花了一个小时自己写了一个

2012-06-02 
【分享】 这几天都在搞网页抓取工具 花了一个小时自己写了一个RT没事自己写的工具核心代码如下 主要是利用ht

【分享】 这几天都在搞网页抓取工具 花了一个小时自己写了一个
RT

没事自己写的工具 

核心代码如下 主要是利用httpwebrequest抓取网站 分析数据 下一步使用正则过滤 和自动抓取网站编码。

C# code
public static string PostData(string data, string method, string postUrl)        {            HttpWebRequest request;            HttpWebResponse response;            ASCIIEncoding encoding = new ASCIIEncoding();            request = WebRequest.Create(postUrl) as HttpWebRequest;            request.ProtocolVersion = HttpVersion.Version10;            request.AllowAutoRedirect = true;            request.KeepAlive = true;            request.Headers.Add("Accept-Language", "zh-cn");            request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; CIBA; .NET4.0C; .NET4.0E)";            request.Method = "GET";            if (method == "post")            {                byte[] b = encoding.GetBytes(data);                request.ContentType = "application/x-www-form-urlencoded";                request.ContentLength = b.Length;                request.Method = "POST";                using (Stream stream = request.GetRequestStream())                {                    stream.Write(b, 0, b.Length);                }            }            string html = string.Empty;                        try            {                //获取服务器返回的资源                using (response = request.GetResponse() as HttpWebResponse)                {                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))                    {                        html = reader.ReadToEnd();                    }                }            }            catch (WebException wex)            {                WebResponse wr = wex.Response;                using (Stream st = wr.GetResponseStream())                {                    using (StreamReader sr = new StreamReader(st, System.Text.Encoding.Default))                    {                        html = sr.ReadToEnd();                    }                }            }            catch (Exception ex)            {                html ="发生异常\n\r" + ex.Message;            }            return html;        }





下载地址http://download.csdn.net/source/2670822

大家别喷啊。。 我只是菜鸟

[解决办法]
沙发。
[解决办法]
板凳。
[解决办法]
沙发。我发的获取邮件联系人的也是用的这个
[解决办法]
没有看见自动识别编码的功能。

靠网页上面的声明根本不行,特别是vs 2005或者更高作的asp.net 。

vs 2005或更高默认创建是utf-8但是菜鸟程序员喜欢加个gb2312 上面。这种网页我在采集的时候经常遇到。
[解决办法]
呵呵,曾经也搞过这个
[解决办法]
其实现在使用webbrowser的更狂啊。httpwebrequest对于抓取显得“弱”一些了,因为毕竟没有拥有一个浏览器。
[解决办法]
探讨

其实现在使用webbrowser的更狂啊。httpwebrequest对于抓取显得“弱”一些了,因为毕竟没有拥有一个浏览器。

------解决方案--------------------


使用webbrowser,很多地方你还用正则吗?

另外说明一下,silverlight中也有webbrowser!哈哈。
[解决办法]
楼主写得好啊,顶!我收藏为网摘了。。。
[解决办法]
下下来看看!
[解决办法]
学习...顺便.接分
[解决办法]
都不知道什么是网页抓取工具
[解决办法]
webbrowser也可以用正则
[解决办法]
dsadasdas
[解决办法]
好厉害啊
[解决办法]
嗯,楼主在做一件相当有技术含量的事,既然楼主已经铁了心走这条路,走到黑为止,那么我也起一起哄:
1,凡是一小时能做出来的东西,无论这件事是由高斯还是牛顿来做,这件事基本上没什么技术含量,也就是对社会没什么贡献的事。所以,先不忙急着把玩一小时的成就,把这点成就暂时当成别人的成就,也许会能冷静地判断这是什么级别的成就。
2,做网业抓取这事,核心技术在于对编译原理的把握。除非已经有过编译的实战,否则,即使将全世界都抓下来都要警惕:这事肯定不是你干的,你只是把别人做好了并且已经套在你脖子上的面包用手轻轻一推就吃到嘴里了,此时务必要提醒自己:面包完全不是自己做的,自己所做的一切基本跟面包没啥关系。
3,N年前已经有12岁的小朋友完成了一个整蛊专家软件,此软件虽然已被批无数,但无数人心中还是有整蛊情结。一个立心要干点事的技术员,如果自省到有整蛊情结,那就要抽自己嘴巴了,要象抽方舟子一样务必抽到淤抽到青为止。
[解决办法]
好厉害啊
[解决办法]
慢了四秒还是把你强暴了。。。小wiki啊
[解决办法]
Sorry楼主,今天喝了点酒,废话又止不住了,回头看才发现自己很不上档次……
[解决办法]
写的很好啊,收藏了
[解决办法]
郁闷 没积分啊。。 给个不要积分的下载吧。。
[解决办法]
不错 很有用
[解决办法]
楼主写得好啊,顶!我收藏为网摘了。。。
[解决办法]
学习。收藏。
[解决办法]
厉害,
支持,
学习,

[解决办法]
都不知道什么是网页抓取工具
[解决办法]
不错,记下来,记得以前也搞过一段这个东西,不过当时搞的是的天气预报的东西。
[解决办法]
网页编码能不固定最好了. 最好有个自动判断.
[解决办法]
页面post抓取的时候,最好设置 System.Net.ServicePointManager.Expect100Continue = false;
[解决办法]
牛,很有用的东东
[解决办法]
学习了 。。。。。。。。
[解决办法]
不错,来学习。。呵呵
[解决办法]
实际的抓取过程中还是得根据不同的网站适当的修改程序,再能保证被抓网站的数据能被正确抓取到。
[解决办法]
哈哈。。看看。。。
[解决办法]
有你这么强的菜鸟吗?下回注意了,别和我抢头衔!
[解决办法]
4.0的?
[解决办法]
先顶下。。在慢慢看。沙发板凳做完了。。别搞得尾巴。。
------解决方案--------------------


向楼主学习!
[解决办法]
不知道干什么用的。囧
[解决办法]

[解决办法]
收藏收藏
[解决办法]
谢谢楼主分享
[解决办法]
- -! 上当了```
[解决办法]

[解决办法]
收藏起来
[解决办法]
JF~~~~~
[解决办法]
谢谢分享 都2星了 不是菜鸟了
[解决办法]
不cuo!

[解决办法]
下载了
[解决办法]
mark up
[解决办法]
好东西
[解决办法]
好得很啊。。。。
[解决办法]
THX 谢谢分享
[解决办法]
我也不知道什么是网页抓取工具...
[解决办法]

探讨
引用:
不知道干什么用的。囧

网页抓取数据啥的。。。

[解决办法]
标记下。
[解决办法]
探讨
嗯,楼主在做一件相当有技术含量的事,既然楼主已经铁了心走这条路,走到黑为止,那么我也起一起哄:
1,凡是一小时能做出来的东西,无论这件事是由高斯还是牛顿来做,这件事基本上没什么技术含量,也就是对社会没什么贡献的事。所以,先不忙急着把玩一小时的成就,把这点成就暂时当成别人的成就,也许会能冷静地判断这是什么级别的成就。
2,做网业抓取这事,核心技术在于对编译原理的把握。除非已经有过编译的实战,否则……

[解决办法]
顶起
[解决办法]
学习,收藏下,没准以后用得着
[解决办法]
听名字不能完全明白有什么用,能不能举个实例,或者简单说下应用于什么方面的呢,这样也不至于太抽象!
[解决办法]
this.PageIndex = 100;
[解决办法]
不错,使用过webbrowser。
[解决办法]
我来喽
[解决办法]
支持一下,不懂20楼说些什么
[解决办法]
学习了,收藏了。
[解决办法]
this.scores += 1;
[解决办法]
强人留名在!
[解决办法]

热点排行