Как получить URL-адрес из атрибута href

html-agility-pack vb.net xpath

Вопрос

Я не могу получить URL-адреса из атрибутов href. Я использую этот код

Dim url As String = "http://example.com/"
Dim web As New HtmlWeb()
Dim doc As HtmlDocument = web.Load(url)

For Each item As HtmlNode In doc.DocumentNode.SelectNodes("//a/@href")
    If Not item Is Nothing Then
        Response.Write(item.OuterHtml)
    End If
Next

Но это не сработает.

Принятый ответ

Поскольку href является атрибутом, вам нужно положить его в квадратные скобки []

Помните, что атрибуты входят в квадратные скобки, когда вы их просматриваете.

//a[@href]

В вашем случае вам нужно получить все //a узлы, затем проверить HasAttributes("href") и, наконец, получить Attributes("href") .

For Each item As HtmlNode In doc.DocumentNode.SelectNodes("//a")
    If Not item Is Nothing And item.HasAttributes("href") Then
        Response.Write(item.Attributes("href").Value)
    End If
Next

Популярные ответы

@Sunil Я использовал этот метод для получения демо-роликов с lynda.com, но он не работает! и он получает ошибку 403

 HtmlNode videoNode = doc.DocumentNode.SelectSingleNode("//video[@class='player']");
                string firstsLink = videoNode.Attributes["data-src"].Value;
                List<string> secLink = firstsLink.Split(';').ToList();
                videoURL = (secLink[index: 0]); 

https://www.lynda.com/mocha-tutorials/mocha-5-Essential-Training/601820-2.html



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему