【问题标题】:Navigate to multiple urls with GeckoBrowser使用 GeckoBrowser 导航到多个 url
【发布时间】:2019-06-08 15:41:05
【问题描述】:

我正在尝试浏览 url 列表并通过 GeckoBrowser 从网页中获取一些内容。问题是 OnDocumentCompleted 可能在不同的线程上,并且 for 循环没有停止,所以它继续进行

我尝试使用多个浏览器进行重构,但没有成功

   private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        browser.DocumentCompleted += OnDocumentCompleted;
        host.Child = browser;
        GridWeb.Children.Add(host);

        #region Collect All Offers
        foreach (var site in sites.OrderBy(x => x.Name))
        {
            _site = site;
             url = site.Url;
             browser.Navigate(site.Url);
        }
        #endregion

    }

所以从上面的代码中,我希望 for 循环在继续之前会等待 OnDocumentCompleted 事件。

有什么想法吗?

【问题讨论】:

    标签: c# wpf gecko geckofx


    【解决方案1】:

    你是对的,DocumentCompleted 事件不会阻塞你的 for 循环。与其使用 for 循环,不如在您编写的 OnDocumentCompleted() 方法中,从站点中获取您想要的数据,然后 Navigate() 到列表中的下一个 url。

    此外,如果您只是想下载 Web 数据,浏览器就太过分了,除非网站真的很复杂并使用 javascript 来呈现内容等。如果您只是想从网站获取简单的 html,只需使用 WebClient :

    string html = new WebClient().DownloadString("https://www.google.com");
    

    WebClient.DownloadString() 方法确实会阻塞,因此您可以按照上面的意图在 for 循环中使用它。

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2016-06-02
      • 2015-11-18
      • 2021-04-24
      • 2017-11-19
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多