Получите <a href= людямhttps://www.google.se/ Обработанной> html пакет аджилити ширины адреса

1

У меня есть этот html:

<div class="table-wrapper" style='display: block;'>
<table id="tableSearchArticle">
    <thead>
        <tr>
            <th><a href="#">Article</a></th>
            <th><a href="#">art.nr.</a></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <a href="http://www.dabas.com/ProductSheet/Detail.ashx/121308" target="_blank">
                    Apple
                </a>
            </td>
            <td><span class="mobile-only">Tillverkarens art.nr:</span>11068</td>
        </tr>
        <tr>
            <td>
                <a href="http://www.dabas.com/ProductSheet/Detail.ashx/124494" target="_blank">
                   Banana
                </a>
            </td>
            <td><span class="mobile-only">Tillverkarens art.nr:</span>11405</td>
        </tr>
    </tbody>
</table>

И это мой метод, который должен получить все href-адреса в таблице. Но теперь я получаю только список названий статей. Мой список возвращает Apple, Banana. Я хочу вернуть список href-http-адресов. Как я могу это сделать?

        public List<string> GetListOfHrefs()
    {
        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load("http://www.dabas.com/mypages/search.aspx?typ=FP&sosokord=laggen");
        var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[1]//@href";
        var listOfGtins = doc.DocumentNode.SelectNodes(xpath)
            .Select(td => td.InnerText.Replace("GTIN:", "")).ToList();
        return listOfGtins;
    }
Теги:
html-agility-pack

1 ответ

2
Лучший ответ

Две проблемы в вашем XPath - href является атрибутом a элементе, а не td элемента, и вы не можете выбрать атрибуты с помощью XPath - вы должны выбрать элементы:

var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td/a[@href]";
var links = doc.DocumentNode.SelectNodes(xpath)
               .Select(a => a.Attributes["href"].Value);

Вывод:

[
  "http://www.dabas.com/ProductSheet/Detail.ashx/121308",
  "http://www.dabas.com/ProductSheet/Detail.ashx/124494"
]
  • 1
    Еще раз спасибо! Работает как шарм =)
  • 0
    У меня есть некоторые проблемы с этим. Вот страница, с которой я пытаюсь получить HTML: dabas.com/ProductSheet/Detail.ashx/121308 Но если вы посмотрите на исходный код, он по большей части содержит javascript. Есть ли какие-либо изменения, которые я могу найти в HTML и использовать для этого функции html Agility Pack? @SergeyBerezovskiy

Ещё вопросы

Сообщество Overcoder
Наверх
Меню