如何在 C# 中从网络浏览器获取数据

本文关键字:网络 浏览器 获取 数据 | 更新日期: 2023-09-27 17:57:00

现在有一个表单和一个网络浏览器,我想检索网络浏览器上显示的数据必须做什么?Div 标签

<div id="divTop">
    <div id="text-conent" style="width: 500px; float: right;"></div>
    <div id="grid" style="margin-removed 505px; height: 700px;"></div>
</div>

我想从标签div"文本 - conent"中获取内容,但不知道如何

如何在 C# 中从网络浏览器获取数据

您可以使用"WebBrowser.DocumentText"属性获取Webbroswer内容

然后,您可以使用CSQuery来解析您的html或任何您喜欢的方法。(如果你认为它更简单,即使是正则表达式)如果你知道JQuery,那就很容易了。

https://github.com/jamietre/CsQuery

var html = myWebBrowser.DocumentText;
var dom = CQ.Create(html);
var divContent = dom.Select("#text-conent").Text();

编辑

如果您只想下载页面以获取数据,则可以删除Web浏览器并使用类似的东西

var dom = CQ.CreateFromUrl("http://www.test.com");
var divContent = dom.Select("#text-conent").Text();
richTextBox1.Text = divContent;

这 2 行将做任何事情。

我写了一个脚本,但它通知了错误

HtmlElement texts = webBrowser1.Document.GetElementById("text-conent");
           string kq = "";
           foreach (var item in texts.All)
               {
                   kq += item.InnerText + Environment.NewLine;
               }
           richTextBox1.Text = kq;

错误:"object"不包含"innerText"的定义,并且找不到接受类型为"object"的第一个参数的扩展方法"innerText"(您是否缺少使用指令或程序集引用)

 HtmlAgilityPack.HtmlDocument doc = (HtmlAgilityPack.HtmlDocument)webBrowser1.Document.DomDocument;
           string texts = doc.DocumentNode.SelectSingleNode("//div[@class='text-conent']/p]").InnerText;
           richTextBox1.Text = texts;

我建议使用HtmlAgilityPack从HTML解析。

在您的情况下,代码将是:

HtmlAgilityPack.HtmlDocument doc = (HtmlAgilityPack.HtmlDocument)webBrowser1.Document.DomDocument;
string text = doc.GetElementbyId("text-content").InnerText;

编辑

或者你试试这个:

text = doc.DocumentNode.SelectSingleNode("//div[@id='divTop']/div[@id='text-content']").InnerText;