随笔-65  评论-636  文章-14  trackbacks-12
DEMO网址:http://www.365rss.cn/WebSnap.aspx

更新:
1,可以抓取大部分的网站,很少几率(暂未发现)返回空白图片。
2,超越Snap.com!比如http://blog.sina.com.cn/u/1268465345,Snap.com抓的图主题内容“还在载入中。。。”,WebPreview直接抓全。
3,解决抓sina.com.cn等网站时候出现的弹窗问题。
4,优化效率,提高速度

下一步目标:
1,实现js特效。

关于原理,大家可以去http://www.cnblogs.com/Chinasf/archive/2006/12/25/603294.html 看。
我发现“萧寒”的水平已经很high了,他的底层代码很地道,工作起来一丝不苟。再赞!同时为有这样一个老乡感到骄傲。

因为要的人太多了,我暂时放在博客园给大家下载:WebPreview1.1.rar_by_Kai.Ma.rar

学习中有任何问题,可以留言或给我发Email讨论,我会及时回复的。
posted on 2006-12-25 23:29 Kai.Ma 阅读(5958) 评论(142)  编辑 收藏 所属分类: 在线生成网页缩略图(WebSnap)

评论:
#1楼  2006-12-25 23:44 | axii[匿名]      
非常感谢Kai.Ma的工作:):。请给我一份:
ColorSMH@msn.com
  回复  引用  查看    
#2楼  2006-12-25 23:44 | 程序人生[匿名]      
gfsoft@126.com
谢谢
  回复  引用  查看    
#3楼  2006-12-25 23:54 | 萧寒      
chinasf at hotmail.com
给我一份,我也来学习一下,希望做的更完善;不过可能还是会有问题;

先提出几个.
1.不知道你的做了缓存没有.
2.目标页如果有JS错误,如果IE弹出错误对话框,下载页将被阻止,不知道这个情况你遇到过没.

  回复  引用  查看    
#4楼  2006-12-26 00:11 | Eunge      
希望得到源代码,谢谢,我的邮箱是eunge.liu#gmail.com

  回复  引用  查看    
#5楼 [楼主] 2006-12-26 00:11 | Kai.Ma      
@萧寒
1,缓存没有做喔,怎么做?
2,这个可以通过给WebBrowser的NewWindow事件设置代理,将代理引用下面的函数设置

//防止弹窗
public void CancelEventHandler(object sender,System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}
js错误还没碰到。


  回复  引用  查看    
#6楼 [楼主] 2006-12-26 00:16 | Kai.Ma      
以上朋友要的源码已经发出。请查收
  回复  引用  查看    
#7楼  2006-12-26 00:26 | 萧寒      
@Kai.Ma

收到你的代码了,建议改动一下:

if (!System.IO.File.Exists(physicsFold + fileName))

把这个修改为按文件过期时间来决定是否更新.

可以搞一个hashtable ,记录如下结构:

hashTable[doMain_URL] = updateTime;

根据上次的时间间隔更新它就可以了.


  回复  引用  查看    
#8楼 [楼主] 2006-12-26 00:28 | Kai.Ma      
@萧寒
好主意。先去洗洗~回头改改
  回复  引用  查看    
#9楼  2006-12-26 00:29 | mine[匿名] [未注册用户]
mine1202@gmail.com
3q
  回复  引用    
#10楼  2006-12-26 00:42 | 啊森[匿名] [未注册用户]
gdcxs457@163.com
在.net1.1下用AxWebBrowser 实现过,但是遇到大网页或网速慢的时候,cpu占用超高,也给我一份学习学习,谢谢
  回复  引用    
#11楼  2006-12-26 00:42 | RicCC      
一个建议,有的网站内容比较多,尤其是图片、视频等,如果要等到这个网页完全load完成再截屏,图片可能很长时间都会出不来
建议设定一个时间间隔,到了这个时间间隔不管网页有没有完成load,就输出图片。大部分情况下,一定时间之后页面的大体布局是已经出来了的,只是里面的一些图片等其它控件没有加载完成。
  回复  引用  查看    
#12楼  2006-12-26 00:45 | 萧寒      
@ RicCC

到是可以增加一个超时进去.
可能无法保证浏览器能显示出内容,可能是白屏幕;
  回复  引用  查看    
#13楼  2006-12-26 00:48 | lswweb [未注册用户]
lswweb@gmail.com 谢谢
  回复  引用    
#14楼  2006-12-26 00:52 | 烙饼与馒头[匿名] [未注册用户]
测了下,效果不错,原来有看过这种程序,想学习下,
邮箱muse_er@163.com 谢谢
  回复  引用    
#15楼  2006-12-26 01:00 | sherwinzhu[匿名] [未注册用户]
sherwinzhu
sherwinzhu@126.com
谢谢!
  回复  引用    
#16楼  2006-12-26 01:06 | EVOLution [未注册用户]
evolution124@gmail.com
谢谢你
  回复  引用    
#17楼  2006-12-26 07:56 | 幻想曲 [未注册用户]
yibin.net@gmail.com
Thx!
  回复  引用    
#18楼  2006-12-26 07:57 | ※ABeen※      
麻烦给我一份,谢谢!
abeen8298@gmail.com
  回复  引用  查看    
#19楼  2006-12-26 08:04 | leeichang      
麻烦给我一份,Thank you!
leeichang@gmail.com
  回复  引用  查看    
#20楼  2006-12-26 08:06 | 我不是神      
好东西
Inotgod@gmail.com
  回复  引用  查看    
#21楼  2006-12-26 08:10 | kiler      
我也想要一份研究研究
kiler398@163.com
  回复  引用  查看    
#22楼  2006-12-26 08:10 | Tseng      
希望LZ上传源代码,免得一个一个发,很辛苦的。
  回复  引用  查看    
#23楼  2006-12-26 08:12 | 阿勇[匿名] [未注册用户]
顶!
我对这也感兴趣,麻烦给我一份,谢谢!
pzy@tosoho.net
  回复  引用    
#24楼  2006-12-26 08:12 | 冬冬      
希望学习一下,看看好的网站到底是什么样子的,
yuandong1222@gmail.com
谢谢:)
  回复  引用  查看    
#25楼  2006-12-26 08:13 | jerrychen [未注册用户]
嚴正的贊一個﹐希望樓主繼續堅持下去!
chensss2008@gmail.com
  回复  引用    
#26楼  2006-12-26 08:16 | 兰亭      
效果不错,谢谢。

lantingyixu@163.com

  回复  引用  查看    
#27楼  2006-12-26 08:27 | 暮松      
俺也想学习一下,谢谢
hjf73015@163.com
  回复  引用  查看    
#28楼  2006-12-26 08:29 | 笑望人生      
也给我来一份吧,谢谢!
submaie@gmail.com
  回复  引用  查看    
#29楼  2006-12-26 08:31 | Bruce Lee      
很不错,能发一份给我研究下吗?
lxg@gdcn.com
  回复  引用  查看    
#30楼  2006-12-26 08:34 | Pheng [未注册用户]
发给我一份吧 谢谢! idazhi@gmail.com
  回复  引用    
#31楼  2006-12-26 08:34 | Robert Lee      
给我一份吧,谢谢,也想学习研究一下
livedevil[2]gmail.com
  回复  引用  查看    
#32楼  2006-12-26 08:35 | elivehai[匿名] [未注册用户]
很不错啊,请给我一份。elivehai@163.com
  回复  引用    
#33楼  2006-12-26 08:37 | 陈涛[匿名] [未注册用户]
实现的很不错,可不可以发给我一份,谢谢!
cch345@126.com
  回复  引用    
#34楼  2006-12-26 08:38 | torome      
来晚了
linlibinmail@163.com
  回复  引用  查看    
#35楼  2006-12-26 08:39 | 随心所欲      
放一份源代码上来吧,省的麻烦
dlwang2002@hotmail.com
  回复  引用  查看    
#36楼  2006-12-26 08:40 | 虫子[匿名] [未注册用户]
非常非常谢谢.
dianshijin@gmail.com
  回复  引用    
#37楼  2006-12-26 08:42 | river [未注册用户]
前一個月,才聽朋友說,要這麼一個功能,問怎么實現的,這才一個月,在園子里就看到了。好想研究研究。給我一份rivensun@163.com
  回复  引用    
#38楼  2006-12-26 08:42 | Darcy      
eta0922@126.com
谢谢拉
  回复  引用  查看    
#39楼  2006-12-26 08:43 | skyover      
admin[at]5inet.net

想看看webbrowser怎么在web里调用。来份吧。谢谢。
  回复  引用  查看    
#40楼  2006-12-26 08:43 | 吴建明      
晚了。
wujm_xa@msn.com
  回复  引用  查看    
#41楼  2006-12-26 08:44 | stonezhu      
满好,学习
zrc000@gmail.com
Thanks a lot
  回复  引用  查看    
#42楼  2006-12-26 08:45 | 小于      
yslike@163.com,谢谢
  回复  引用  查看    
#43楼  2006-12-26 08:50 | learn [未注册用户]
lcg200x@126.com十分感谢
  回复  引用    
#44楼  2006-12-26 08:51 | 吴杰      
很感兴趣,想研究研究,先谢啦 wufujie2000@163.com
  回复  引用  查看    
#45楼  2006-12-26 08:51 | ddee [未注册用户]
感谢~~~~~~`学习一下

ddee_luozaiqian@sohu.com
  回复  引用    
#46楼  2006-12-26 08:52 | james.dong[匿名] [未注册用户]
我也要一份源码,学习学习
jxdong1013@gmail.com
  回复  引用    
#47楼  2006-12-26 08:52 | 数据绑定者      
Databinder@163.com

看原理,有相关文档么?
  回复  引用  查看    
#48楼  2006-12-26 08:58 | 林石      
tigerjacky@21cn.com
谢谢,有相关的注释么?
  回复  引用  查看    
#49楼  2006-12-26 08:59 | yanwc [未注册用户]
yanwc@163.com
向您学习
  回复  引用    
#50楼  2006-12-26 09:01 | 柠檬[匿名] [未注册用户]
非常值得学习和借鉴
我想要源代码,谢谢!
http://www.cnblogs.com/3lsoft
邮箱:3lsoft#163.com
  回复  引用    
#51楼  2006-12-26 09:01 | cupidbow      
希望可以学习。110990825@163.com
  回复  引用  查看    
#52楼  2006-12-26 09:02 | fafa [未注册用户]
guihuantianshi@126.com
谢谢
  回复  引用    
#53楼  2006-12-26 09:02 | 励箭[匿名] [未注册用户]
谢谢
shen_si@126.com
  回复  引用    
#54楼  2006-12-26 09:03 | NeedForSleep      
zlrex.fstone@gmail.com
研究一下,谢谢。
  回复  引用  查看    
#55楼  2006-12-26 09:03 | anikin      
我也想学习,也许以后有机会用到
http://anikin.cnblogs.com/
邮箱:
anikin@vip.sohu.net
谢谢
  回复  引用  查看    
#56楼  2006-12-26 09:05 | jackhu [未注册用户]
请email我一份学习:hero_jack@163.com
谢谢
  回复  引用    
#57楼  2006-12-26 09:06 | 幸运草      
shoucao_66@hotmail.com
谢谢
  回复  引用  查看    
#58楼  2006-12-26 09:06 | 喜欢吹风的感觉      
学习
tengjun.xia@gmail.com
thks.
  回复  引用  查看    
#59楼  2006-12-26 09:09 | 忧郁的火柴头 [未注册用户]
感谢LZ,正好需要这个
sohoer2003@gmail.com
  回复  引用    
#60楼  2006-12-26 09:10 | 潘胜国      
oceanchip at gmail.com
Thank you!
  回复  引用  查看    
#61楼  2006-12-26 09:11 | 海浪空间      
发给我一份吧 谢谢! wengjinbao@gmail.com
  回复  引用  查看    
#62楼  2006-12-26 09:11 | DeltaCat      
3Q

学习一下

delta8cat {at} gmail.com
  回复  引用  查看    
#63楼  2006-12-26 09:12 | 贫嘴老赵      
给我一份源码,谢谢拉
prolibertine@gmail.com
  回复  引用  查看    
#64楼  2006-12-26 09:13 | supertruman [未注册用户]
mfking422@sohu.com 多谢多谢
  回复  引用    
#65楼  2006-12-26 09:13 | 7in10 [未注册用户]
确实不错
boyle0410@163.com
  回复  引用    
#66楼  2006-12-26 09:15 | hyundai [未注册用户]
学习以下
wangyang@mainone.cn
  回复  引用    
#67楼  2006-12-26 09:15 | 知识辞典 [未注册用户]
biao_zeng@126.com 给我一份
  回复  引用    
#68楼  2006-12-26 09:15 | codefan [未注册用户]
LZ,我看还是传一份上来比较好,需要的人太多了。
邮箱:yuanlfrj@163.com
  回复  引用    
#69楼  2006-12-26 09:16 | 单摆      
非常感谢Kai.Ma的工作:):。请给我一份:
cxbsky@hotmail.com
谢谢
  回复  引用  查看    
#70楼  2006-12-26 09:18 | Lucifer[匿名] [未注册用户]
想学习一下,谢谢!
planforekong@hotmail.com
  回复  引用    
#71楼  2006-12-26 09:20 | 阿学 [未注册用户]
想要一份学习一下。
劳烦发一份到 91kejian@gmail.com
  回复  引用    
#72楼  2006-12-26 09:21 | everysun[匿名] [未注册用户]
很不错的,很想学习一下,麻烦楼主,我也来一份,谢谢
everysun@gmail.com
  回复  引用    
#73楼  2006-12-26 09:23 | 网际飞狐      
学习一下!
http://www.cnblogs.com/billchen
cjb@csdn.net
  回复  引用  查看    
#74楼  2006-12-26 09:25 | 禾口王[匿名] [未注册用户]
好像页面中有flash对象的话,抓取的时候很慢。
  回复  引用    
#75楼  2006-12-26 09:28 | 有容乃大      
我也要一份。
  回复  引用  查看    
#76楼  2006-12-26 09:28 | 第一控制.NET      
学习
rredwolf@gmail.com
  回复  引用  查看    
#77楼  2006-12-26 09:28 | fengyun [未注册用户]
需要一份学习,非常感谢!
wenyicom@gmail.com
  回复  引用    
#78楼 [楼主] 2006-12-26 09:29 | Kai.Ma      
@萧寒
线程的超时已经加啦~
  回复  引用  查看    
#79楼  2006-12-26 09:32 | 路人甲[匿名] [未注册用户]
谢谢分享~!
jeanso@163.com
  回复  引用    
#80楼  2006-12-26 09:32 | Kevin[匿名] [未注册用户]
xiaobao007@hotmail.com
谢谢
  回复  引用    
#81楼  2006-12-26 09:38 | 肥仔鱼      
能分享给我吗?我急需webservice的实例
yumingguo@126.com
  回复  引用  查看    
#82楼  2006-12-26 09:40 | 雨恨云愁 [未注册用户]
多谢分享
redwolf_123@163.com 谢谢
  回复  引用    
#83楼  2006-12-26 09:40 | 程序爬虫      
希望学习一下
franck.gao@gmail.com
  回复  引用  查看    
#84楼  2006-12-26 09:42 | yu[匿名] [未注册用户]
希望得到源代码,谢谢,我的邮箱是raiseyu@gmail.com
  回复  引用    
#85楼  2006-12-26 09:45 | gyf19 [未注册用户]
gyf19@163.com
研究一下
  回复  引用    
#86楼  2006-12-26 09:45 | 青海湖[匿名] [未注册用户]
fengleiguo@msn.com
谢谢
  回复  引用    
#87楼  2006-12-26 09:46 | lovebanyi [未注册用户]
asporaspdotnet@gmail.com
谢谢
  回复  引用    
#88楼  2006-12-26 09:46 | didasoft      
我也想要学习学习,希望能得到源代码,谢谢。我的邮箱是didasoft@gmail.com。
  回复  引用  查看    
#89楼  2006-12-26 09:46 | 还没有博客 [未注册用户]
发我一份吧,谢谢!
fby001_wangdui@163.com
  回复  引用    
#90楼  2006-12-26 09:52 | 玻璃*杯      
我试了一下你的demo,好像http://www.cctv.com抓不了,不过赞一个,不错的功能..
  回复  引用  查看    
#91楼 [楼主] 2006-12-26 09:53 | Kai.Ma      
好了,大家不要再留下email了,我已经传到放在博客里面,大家可以刷新,点击链接下载了
  回复  引用  查看    
#92楼  2006-12-26 09:53 | 叶漂[匿名] [未注册用户]
人才啊!本人虽搞了好几年.net,但这样的炫的东西都是搞不明白的,也麻烦发个源码给我看看,多谢!!
kaifangwife@hotmail.com
  回复  引用    
#93楼  2006-12-26 09:54 | fuyun [未注册用户]
学习一下
scfido@gmail.com
  回复  引用    
#94楼 [楼主] 2006-12-26 09:55 | Kai.Ma      
@玻璃*杯
因为CCTV.COM用了域名跳转,如果直接输入http://www.cctv.com/default.shtml,是可以抓到了。正在想办法怎么解决中~
  回复  引用  查看    
#95楼  2006-12-26 10:00 | Wisdom-zh      
路过, 留言:)

  回复  引用  查看    
#96楼  2006-12-26 10:01 | Edwin Liu      
JS错误是指:在抓页面时,目标页面发生了JS错误,导致需要干预后,才能正常结束页面呈现的工作。否则页面不显示出来,也谈不上抓取。

我的邮箱是: Edwin0220#hotmail.com, 谢谢
  回复  引用  查看    
#97楼  2006-12-26 10:12 | 萧寒      
@Kai.Ma

EdWin Liu 遇到了我说的那个js error dialog 的问题了;

另外,我的 Snapshot 类做了修正;请更新一下.

http://www.cnblogs.com/Chinasf/archive/2006/12/25/603294.html
  回复  引用  查看    
#98楼  2006-12-26 10:14 | Jeffrey Zhao      
Bin下面的dll才是关键阿,呵呵,那么怎么不开源啊?
  回复  引用  查看    
#99楼 [楼主] 2006-12-26 10:22 | Kai.Ma      
@萧寒
好的,我更新一下Snapshot类。

js error dialog的问题,我觉得:
1,_wb.ScriptErrorsSuppressed = false;可以解决大部分问题。这个你在之前的代码中就写了~:)

2,同样可以通过 事件+代理 解决
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(documentCompletedEventHandler);

private void documentCompletedEventHandler(object sender, WebBrowserDocumentCompletedEventArgs e)
{
((WebBrowser)sender).Document.Window.Error += new HtmlElementErrorEventHandler(SuppressScriptErrorsHandler);
}

//压制js错误
public void SuppressScriptErrorsHandler(object sender, HtmlElementErrorEventArgs e)
{
e.Handled = true;
}

我觉得第一个就可以处