我在下面发布了我的HTML。我想从我的文本框区域中获取Number值。我已经尝试了几个流程,但我还没有得到任何有效的解决方案。请检查我的HTML和代码段,并向我展示一个可能的解决方案。
刷新页面时,数字前缀始终保持不变。但是," Number"中的最后一个数字;区域将改变,但将始终包含" 206"作为前3位数。以下是我的表格示例。
<table align="center" width="500" border="0">
<tr><td align="center" height="30" style="font-size:medium">See your job Details, adriankdins2f3dd@hotmail.com.</td></tr>
<tr><td align="center" style="color:#CC3300"><b>Your Job Information is:</b></td></tr>
<tr><td align="center">
<table>
<tr><td><b>Phone Number:</b> 206-600-9159</td></tr>
<tr><td><b>Your AGe:</b> 25</td></tr>
<tr><td><b>Email:</b> adriankdins2f3dd@hotmail.com</td></tr>
<tr><td><b>Job Title</b> cleaner </td></tr>
</table>
</td>
</tr>
<tr><td align="center" valign="middle" height="25">Jobinstruction</td>
</tr>
<tr><td>
</td></tr>
<tr><td
</td></tr>
</table>
如下所示,我正在使用列表框尝试此过程,但我没有收到任何内容。
Regex re = new Regex(@"(?<=<tr><td><b>Phone\s Number:\s?</b>\s?)[206]\s.+?(?=</td></tr>)", RegexOptions.Singleline);
foreach (Match match in re.Matches(webBrowser1.DocumentText))
{
listBox1.Items.Add(match.Value);
}
如果有人能够让我知道我如何能够在浏览器窗口中收到所有内容(&#34; 206&#34; + Number),我会很感激。此外,如果您能够详细解释答案并提出好的评论,我将不胜感激,因为我也想更详细地理解答案。
答案 0 :(得分:0)
您可以使用HtmlAgilityPack和XPath查询来执行此操作:
using HtmlAgilityPack;
...
HtmlDocument html = new HtmlDocument();
html.LoadHtml(htmlText);
HtmlNode doc = html.DocumentNode;
HtmlNode node = doc.SelectSingleNode("//table/tr/td/b[starts-with(.,'Phone Number:')]/following::text()[1]");
if (node != null)
{
Console.WriteLine(node.OuterHtml);
}
答案 1 :(得分:0)
由于您使用的是WebBrowser组件,因此无需使用任何外部库。您需要访问正确的表(在大多数情况下,表具有唯一的ID,或者您可以通过使用GetElementsByTagName
获得的结果数组中的索引来访问它。)
您可以遍历所有表格,行和单元格,并检查InnerText
是否以Phone Number:
开头,然后获取您需要的值。
webBrowser1.Navigate(@"C:\tmp2.html");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
HtmlElementCollection bColl = webBrowser1.Document.GetElementsByTagName("td");
var TelNum = string.Empty;
var PersonName = string.Empty;
if (bColl != null && bColl.Count > 0)
{
foreach (HtmlElement td in bColl)
{
if (!String.IsNullOrEmpty(td.InnerText) && td.InnerText.StartsWith("Phone Number:"))
TelNum = td.InnerText.Substring(14).Trim();
if (!String.IsNullOrEmpty(td.InnerText) && td.InnerText.StartsWith("Your Name is "))
PersonName = td.InnerText.Substring(13).Trim();
}
}
我使用Trim()
以防有人在那里留下多余空格。