在webForm中WebRequest/WebClient/WebBrowser获取远程页面源码的三种方式(downmoon)
来源:互联网 发布:单片机硬件开发合同 编辑:程序博客网 时间:2024/05/01 01:10
一个小需求,获取远程页面的源码,主要用于抓数据。原来用的好好的,最近突然不能获取页面源码了,但是仍然可以用浏览器正常浏览。(文后附源码下载。^_^)
经过分析,原来用的代码如下:
查了下资料,原来需要加参数。
修正后的代码如下:
问题是解决了,后来再想了想,可以用WebClient先把页面download到本地临时文件,再读取文本内容。
代码如下:
结果不能获取源码。错误如下:
再想想,还有Webbrowser控件可以用啊。在WinFrom下只要在主线程前加[STAThread]即可。
在WebForm就麻烦些了,出现错误,线程不在单线程单元中,故无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”
代码如下:
后来搜索N小时(N>=5)后,终于找到可行解决方案,在WebPage页面头部加入AspCompat="true"
即<%@ Page Language="C#" AspCompat="true" ******/>
MSDN给出的解释是:
在 ASP .NET 网页的 <%@Page> 标记中包含兼容性属性 aspcompat=true,如 <%@Page aspcompat=true Language=VB%>。使用此属性将强制网页以 STA 模式执行,从而确保您的组件可以继续正确运行。如果试图使用 STA 组件但没有指定此标记,运行时将会发生异常情况。
将此属性的值设置为 true 时,将允许网页调用 COM+ 1.0 组件,该组件需要访问非管理的 ASP 内置对象。可以通过 ObjectContext 对象进行访问。
如果将此标记的值设为 true,性能会稍微有些下降。建议只在确实需要时才这样做。
终于可以了! 不知道有没有更好的方法??
附:源码下载。
邀月注:
如果不能测试,请注意是否在域(AD)环境下,如果是! 请注意设置代理和防火墙
请参考:
http://dev.csdn.net/article/83914.shtm
或http://blog.csdn.net/downmoon/archive/2006/04/14/663337.aspx
或http://www.cnblogs.com/downmoon/archive/2007/12/29/1019701.html
- 在webForm中WebRequest/WebClient/WebBrowser获取远程页面源码的三种方式(downmoon)
- C# 读取网页源码的三种办法WebClient、WebRequest、HttpWebRequest
- 以一种"廉价"的方式获取页面的标题(downmoon)
- c#利用WebClient和WebRequest获取网页源代码的比较
- c#利用WebClient和WebRequest获取网页源代码的比较
- c#利用WebClient和WebRequest获取网页源代码的比较
- c#利用WebClient和WebRequest获取网页源代码的比较
- php 中获取远程用户ip的三种方式,并判定ip是否在一定的范围之内
- WebClient和WebRequest获取html代码
- WebClient和WebRequest获取html代码
- WebForm中获取远程IP地址
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- 【转载】C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- WebBrowser之获取跳转页面的Document接口源码
- 在框架中获取会话session的三种方式
- c#利用WebClient和WebRequest的比较
- 在一个JSP页面中包含另一个JSP页面的三种方式。
- struts2 property标签访问 Java静态方法
- dll动态加载的方式
- FireFoxPortable升级3.5手记
- iframe解决层和select下拉框显示问题
- ubuntu LAMP apache 配置问题
- 在webForm中WebRequest/WebClient/WebBrowser获取远程页面源码的三种方式(downmoon)
- extjs在IE报对象不支持此属性或方法
- Ext grid不显示数据问题解决
- 打印出python 当前全局变量和入口参数的所有属性
- WTL编程的十个技巧
- Windows Mobile开发环境搭建
- 第四章 Binding
- java final用在方法参数中
- Windows及路由器等命令,很有用,留着慢慢学习