2

以下にHTMLを投稿しました。テキストボックス領域内から Number 値を取得したい。いくつかのプロセスを試しましたが、まだ有効な解決策が得られません。私の HTML とコード スニペットを確認して、考えられる解決策を教えてください。

ページを更新しても、番号のプレフィックスは常に同じままです。ただし、「番号」エリア内の最後の番号は変更されますが、常に最初の 3 桁として「206」が含まれます。以下は私のテーブルの例です。

<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);
        }

リストボックス内でブラウザウィンドウのすべてを(「206」+数値)として受け取る方法を誰かが教えてくれれば幸いです。また、回答をより詳細に理解したいので、回答を詳細に説明し、良いコメントを付けていただければ幸いです。

4

2 に答える 2

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()誰かが余分なスペースを残した場合に備えて使用しました。

于 2015-09-08T12:51:42.753 に答える