Я честно не знаю, как это сделать, и я очень застрял. Мой код, вероятно, не стоит делиться, но я постараюсь ответить на все вопросы.
<div class="pricing-table">
<div class="span4">
<div class="plan">
<h3>PPTP <span>$0</span></h3>
<ul>
<li><b>IP:</b> " (hidden)"</li>
<li><b>Username:</b> " Guest"</li>
<li><b>Password:</b> " (hidden)"</li>
<li><b>Unlimited</b> " Bandwidth"</li>
<li><b>Torrents</b> " Allowed"</li>
<li><b>No</b> " Logging"</li>
</ul>
</div>
</div>
</div>
(Это второй)
<div class="span4">
<div class="plan most-popular">
<h3>Open<span>$0</span></h3>
<div class="plan-ribbon-wrapper">
<div class="plan-ribbon">
Popular
</div>
</div>
<ul>
<li><b>Username:</b> user</li>
<li><b>Password:</b> (hidden)</li>
<li><b>TCP</b> 80, 443</li>
<li><b>UDP</b> 53, 40000</li>
<li><b>Unlimited</b> Bandwidth</li>
<li><b>Torrents</b> Allowed</li>
<li><b>No</b> Logging</li>
</ul><a class="btn btn-large btn-primary" href=
"%20(hidden)">Download</a>
</div>
</div>
<ul>
<li><b>Username:</b> user</li>
<li><b>Password:</b> (hidden)</li>
<li><b>TCP</b> 80, 443</li>
<li><b>UDP</b> 53, 40000</li>
<li><b>Unlimited</b> Bandwidth</li>
<li><b>Torrents</b> Allowed</li>
<li><b>No</b> Logging</li>
</ul>
Используя этот код HTML, я хочу скопировать имя пользователя и пароль и поместить его в ярлык в моей форме.
Вот мой код
Imports HtmlAgilityPack
Public Class Form1
Dim Prev_Pass, Prev_User, Currt_Pass, Currt_User, Info
Dim counter As Integer
Dim web As New HtmlWeb()
Dim htmldoc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument
Dim htmlnodes As HtmlAgilityPack.HtmlNodeCollection = Nothing
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
htmldoc = web.Load("website")
htmlnodes = htmldoc.DocumentNode.SelectNodes("//div[@class=""pricing-table""]")
For Each node As HtmlAgilityPack.HtmlNode In htmlnodes
Dim releaseNode = node.SelectSingleNode("//div[@class=""plan most-popular""]")
Info = releaseNode.SelectSingleNode("//ul/li/b[contains(text(), 'Username: ')]").InnerText
Next
Label3.Text = Info
End Sub
End Class
Рассмотрим следующие аннотации:
<li>
<b>Username:</b> <!-- Use XPath to obtain this element. -->
" user" <!-- This is the next sibling. -->
</li>
Учитывая эти примечания:
Вы можете получить элемент <b>
с помощью XPath, как вы уже сделали, а затем получить доступ к имени пользователя или паролю с помощью свойства NextSibling
:
Dim username =
htmldoc.DocumentNode.SelectSingleNode(
"//ul/li/b[text()='Username:']").NextSibling.InnerHtml
Dim password =
htmldoc.DocumentNode.SelectSingleNode(
"//ul/li/b[text()='Password:']").NextSibling.InnerHtml
Если вы хотите получить доступ ко второму вхождению элемента вместо первого, то вам следует либо использовать более конкретный XPath, либо использовать SelectNodes
и получить элемент, расположенный во втором индексе, с помощью индексатора, например:
Dim username =
htmldoc.DocumentNode.SelectNodes(
"//ul/li/b[text()='Username:']")(1).NextSibling.InnerHtml