在 Web 浏览器 C# 中获取网页的源代码

本文关键字:网页 源代码 获取 Web 浏览器 | 更新日期: 2023-09-27 18:35:34

目前我有一个在WebBrowser组件中加载的网站,该网站不断更改页面内某个<a>内的内容。为了让我获取数据,我必须每 5 秒创建另一个 WebRequest,只是为了刷新数据(我认为它们被称为动态页面)。我尝试从 WebBrowser ( WebBrowser.DocumentText ) 获取数据,但值保持不变,即使我很确定它发生了变化,因为我可以看到它发生了变化。我认为每 5 秒的 webrequest 会占用不必要的内存空间,这可以更容易地完成。

你们也许知道我这样做的方法吗?

在 Web 浏览器 C# 中获取网页的源代码

Guessing at Winforms. 您需要使用 Document 属性来读回 DOM。 下面是一个示例。 启动一个新的 WinForms 项目,并在窗体上放置一个 Web 浏览器。 然后是一个标签和一个计时器。 使代码如下所示:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        webBrowser1.Url = new Uri("http://stackoverflow.com/questions/10781011/get-source-of-webpage-in-webbrowser-c-sharp");
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
        timer1.Interval = 100;
        timer1.Tick += new EventHandler(timer1_Tick);
    }
    void timer1_Tick(object sender, EventArgs e) {
        var elem = webBrowser1.Document.GetElementById("wmd-input");
        label1.Text = elem.InnerText;
    }
    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        timer1.Enabled = true;
    }
}

浏览器将导航到您的问题。 在"答案"框中键入内容,请注意标签如何显示您键入的内容。

您需要调整此代码以使用您的特定网页,更改"wmd-input"元素名称。 使用 DOM 检查工具查找名称。 我喜欢萤火虫。

你可以尝试通过JavaScript获取源代码。

使用 InvokeScript 方法执行return document.documentElement.outerHTML;

这将返回一个Object,您应该能够键入转换为String