如何从C#中的webbrowser获取数据

时间:2015-06-19 07:59:02

标签: c#

现在有一个表单和一个webbrowser我想检索webbrowser上显示的数据必须做什么? 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>

我想从tag div'text - conent'获取内容,但不知道如何

4 个答案:

答案 0 :(得分:1)

您可以使用“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();

修改

如果您只是想下载一个页面来获取数据,您可以删除您的网络浏览器并使用类似的东西

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

这两行将完成所有工作。

答案 1 :(得分:0)

我建议使用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;

答案 2 :(得分:0)

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

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'的定义,也没有扩展方法'innerText'接受'object'类型的第一个参数(你是否缺少using指令或汇编引用)

答案 3 :(得分:0)

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