私はテキストボックスを持つWindowsフォームを持っています。コードはchromes開発ツールを使って得たxpathを使ってウェブサイトから情報を引き出し、HtmlAgilityPack - テキストボックスに何も表示されない
問題は、プログラムを実行してもテキストボックスに何も表示されない場合です。情報を取得するために使用されるコードが間違っているのか、その情報を表示するコードが間違っているのかどうかはわかりません。このコードはHtmlAgilityPackを使用しています。
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string Url = "https://apps.ko.com/aami/iguest/default.asp";
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(Url);
string username = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[1]/td[2]/strong")[0].InnerText;
string password = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[2]/td[2]/strong")[0].InnerText;
string summary = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[4]")[0].InnerText;
richTextBox1.Text = "User Name: " + username + " | Password: " + password + " | Summary: " + summary;
}
あり、イントラネットページに記載されているユーザー名とパスワードがあると私はWebページからそれを引くと、テキストボックスに表示し、そうしようとしている:ここで
は、問題のコードですこのアプリケーションがドメインマシン上で実行されている間は、ページにアクセスして必要な情報を表示できるはずです。私は何かにログインしようとしていない、ちょうどウェブページからいくつかのテキストを引っ張る。ドメインからアクセスできないため、あなたがページを見ることができません。
セキュリティ上の理由からコード内のウェブアドレスが変更されたHTMLページです。
<body>
<div style="background-image:url(intranet.com/images/headergraphic_repeat_tile.jpg); background-repeat:repeat-x; margin-top:0px; margin-left:0px; width:100%; height:118px; padding:0px;">
<img src="https://intranet.com/iguest/images/headergraphic_extended.jpg" align="right">
</div>
<center>
<div style="width:390px; padding:20px; ">
<h2 align="center">Guest Wireless Access</h2>
<p align="left">Guests may access the wireless service by using the log-in <br>credentials below. <br>
<br>
</p>
<table width="360" align="left" cellpadding="4" cellspacing="0">
<tbody><tr>
<td width="63">User ID:</td>
<td><strong>KOGUEST</strong></td>
</tr>
<tr>
<td>Password:</td>
<td><strong><span id="iguestpw">[email protected]</span></strong> <font size="-2"> (Password is case-sensitive.)</font></td>
</tr>
<tr>
\t <td colspan="2" align="center"><font size="-2"> The password is updated once a week on<br> Saturday at midnight EST.<br></font></td>
</tr>
<tr>
\t <td colspan="2"><br><br><p align="left"><a href="https://partner.intranet.com/sites/kooffice/training/documentation/guest wireless access_instructions for connecting.doc" target="_blank">Print instructions</a> for your guest.<!-- or <a href="https://partner.intranet.com/sites/kooffice/training/i want to/courtesy wireless access.aspx" target="_blank">visit DWP</a> to learn more.--></p></td>
</tr>
</tbody></table>
</div>
</center>
</body>
そのHtmlでは、あなたのxpathに 'tbody'がありません。 'table'タグの中には' tbody'タグがあり、 'tbody'の中にはテーブルの行があります。例えば、最初のxpathは '/ html/body/center/div/table/tbody/tr [1]/td [2]/strong'でなければなりません。 – derloopkat
私はcomewithがtbodyを誤って追加するところを読んでいますが、 xpathはクロムを使用しているので、間違っているかもしれません。私はxpathを書く方法を知りません。 –
Firefoxでは、要素を右クリックし、 "inspect"を押します。次に、Htmlタグを右クリックし、xpathをコピーします。また、この$ x( "my xpath here")を使用してコンソールでxpathsを短縮してテストすることもできます。フルパスではなく、// td [text()= 'User ID:']/following-sibling :: td/strong'のようなものを書くのがアイデアです。最初は二重スラッシュ「//」に注意してください。これにより、どこにいてもそれが見つかります。 Chromeの検査ツールも良いです。 – derloopkat