网页浏览器innertext数据如何在文本框中收到?

时间:2015-09-07 15:02:44

标签: regex web-scraping scraper innertext htmlelements

我在下面发布了我的HTML。我想从我的文本框区域中获取名称值。我已经尝试了几个流程,但我还没有得到任何有效的解决方案。请检查我的HTML和代码段,并向我展示一个可能的解决方案。

刷新页面时,名称前缀始终保持不变。但是,"名称中的姓氏"区域将改变,但将始终包含文字"先生"作为前3位数。正则表达式为([mM] r。\) - 如果考虑文字空间,则为四位数。以下是我的表格示例。

<table>
<tr><td><b>Your Name is </b> mr. kamrul</td></tr>
<tr><td><b>your age </b> 12</td></tr>
<tr><td><b>Email:</b>kennethdasma30@gmail.com</td></tr>
<tr><td><b>job title</b> sales man</td></tr>
</table>

如下所示,我正在使用列表框尝试此过程,但我没有收到任何内容。

 HtmlElementCollection bColl = 
 webBrowser1.Document.GetElementsByTagName("table");
        foreach (HtmlElement bEl in bColl)
        {
            if (bEl.GetAttribute("table") != null)
            {
                listBox1.Items.Add(bEl.GetAttribute("table"));
            }
        }

如果有人可以让我知道我如何能够在浏览器窗口中收到所有内容(&#34;先生&#34; +文本),我会很感激。此外,如果您能够详细解释答案并提出好的评论,我将不胜感激,因为我也想更详细地理解答案。

1 个答案:

答案 0 :(得分:0)

这是使用正则表达式的一种简单方法,假设您的html页面的格式没有变化。

Regex re = new Regex(@"(?<=<tr><td><b>Your\sName\sis\s?</b>\s?)[mM]r\.\s.+?(?=</td></tr>)", RegexOptions.Singleline);
foreach (Match match in re.Matches(webBrowser1.DocumentText))
{
    listBox1.Items.Add(match.Value);
}