首页 新闻 会员 周边 捐助

C# WebBrowser 抓取问题。。。。急急

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-08-31 17:08

我需要抓取一个页面

首次加载是读取到内容

 

抓取子页面时,

this.webBrowser1.Navigate(url);
this.webBrowser1.Refresh();

 

 var doc = this.webBrowser1.Document;

 

获取的还是第一次加载的内容

 

这个该怎么解决

 

补充

HttpWebRequest 抓取不到页面元素

学点东西:)的主页 学点东西:) | 初学一级 | 园豆:6
提问于:2015-06-29 17:16
< >
分享
所有回答(3)
0

webBrowser2和webBrowser1,控件是同一个吗?

JeffWong | 园豆:2328 (老鸟四级) | 2015-06-29 17:20

是的,题目内容修改了,谢谢

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 17:21

@学点东西:): webbrowser控件访问页面,页面加载完成才能得到document,给它加一个加载完成事件,或者直接使用WebClient进行访问页面抓取,比webbrowser方便多了。

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-06-29 17:33

@JeffWong:   http://m.lechebang.com/webapp/car/brand

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 17:40

@JeffWong: http://m.lechebang.com/webapp/car/brand 抓不到标签

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 17:40

@学点东西:): 试一下下面的代码:

            var webBrowser = new WebBrowser();
            webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetDocument);

            webBrowser.Navigate(" http://m.lechebang.com/webapp/car/brand");
            webBrowser.Refresh();

页面加载后回调事件代码:

        private void GetDocument(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var browser = ((WebBrowser)sender);

            var doc = browser.Document;

            var html = browser.DocumentText;
        }

 

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-06-29 17:45

@JeffWong: 

for
            {
            this.webBrowser1.Url = new Uri(url);
            this.webBrowser1.Refresh();
            }

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 18:54

@JeffWong: 

for
            {
            this.webBrowser1.Url = new Uri(url);
            this.webBrowser1.Refresh();
            }

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 18:54

@JeffWong:     

 

for
            {
            this.webBrowser1.Url = new Uri(url);
            this.webBrowser1.Refresh();
            }

如果这样怎么做到呢?

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 18:55

@JeffWong: 

不好意思,回复太多了,如何才能做到for循环呢? 为什么循环后,事件方法只到最后一次循环的地址呢

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 18:58

@JeffWong: 

刚才我添加for了,但是用了你的方法加载不全,js没有完全加载上去

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-29 19:05

@学点东西:): webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetDocument);这行代码必须加进去,和循环没关系。

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-06-30 09:07

@JeffWong: 嗯,我添加,GetDocument 能读到数据但是不是最终加载的数据,还有些js显示的数据加载不上

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-30 09:10

@学点东西:): 通过路径引入的.js文件需要重新发起请求抓取

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-06-30 09:19

@JeffWong:  俄,貌似这样不太好吧,我先直接加载完全之后在读取内容

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-30 16:42
0

webBrowser的版本设置对了吗?它默认是用最低版本的。

XiaoFaye | 园豆:3087 (老鸟四级) | 2015-06-30 05:59

。。。这个怎么设置?属性没有找到

支持(0) 反对(0) 学点东西:) | 园豆:6 (初学一级) | 2015-06-30 09:11

@学点东西:): 

你看这里吧:

http://www.cyotek.com/blog/configuring-the-emulation-mode-of-an-internet-explorer-webbrowser-control

支持(0) 反对(0) XiaoFaye | 园豆:3087 (老鸟四级) | 2015-07-01 05:57
0

我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ̄)"。所以我们团队开发了一个专门让开发者用简单的几行 javascript 就能在云上编写和运行复杂爬虫的系统,叫神箭手云爬虫开发平台: http://www.shenjianshou.cn 。欢迎同行们来试用拍砖,尽情给俺们提意见。有想法的可以加群讨论: 342953471

wangm_xjtu | 园豆:224 (菜鸟二级) | 2016-05-25 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册