【问题标题】:Creating a method that uses WebBrowser and returns HTML?创建一个使用 WebBrowser 并返回 HTML 的方法?
【发布时间】:2017-04-02 05:38:40
【问题描述】:

如何创建执行此操作的方法:
登录网站,然后阅读(仅限会员)页面并返回 HTML。

我想出了这个(这显然行不通,因为我不知道如何让它返回页面内容)

public string LoginAndReadPage() {
    WebBrowser wb = new WebBrowser();
    wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
    wb.Navigate("hxxp://mysite.com/login");
}

private async void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (wb.Url.ToString().Contains("login"))
    {
        wb.Document.GetElementsByTagName("input").GetElementsByName("email")[0].SetAttribute("value", _login);
        wb.Document.GetElementsByTagName("input").GetElementsByName("password")[0].SetAttribute("value", _password);
        wb.Document.GetElementsByTagName("button")[0].InvokeMember("click");
    }
    else if (wb.Url.ToString().Contains("dashboard"))
    {
        return wb.DocumentText; // I want to return the content of mysite.com/dashboard
    }
    else
    {
        await Task.Delay(1000); //wait for 1 second just to let the WB catch up
        wb.Navigate("hxxp://mysite.com/dashboard");
    }
}

提前致谢

【问题讨论】:

  • wb.Document 是 DOM 你还想要什么?
  • @Edmad:我想退货,可能来自 LoginAndReadPage 方法
  • 一定要使用浏览器控制吗?
  • @Niklas 没有,你有其他解决方案吗? (网页使用AngularJS加载内容和OAuth)
  • 我对此并不熟悉,但请检查一下这是否有效? stackoverflow.com/questions/11118712/…

标签: c# .net webbrowser-control


【解决方案1】:

您尝试执行的操作称为“抓取”或有时称为“网络抓取”。这是一个很大的话题,所以我推荐googling it

您也可以通过 C# 驱动程序使用 Selenium 之类的东西来执行此操作。 Selenium 是为自动化 UI 测试而设计的,但它绝对拥有您所需的所有工具。

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2021-03-17
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多