c # html пакет гибкости, извлекающий строки из исходного кода html - PullRequest
0 голосов
/ 20 октября 2019

Я только что изучил html пакет agility и хотел бы извлечь пару фрагментов данных с веб-сайта. Я хочу сохранить название предмета и цену в строках. У меня есть исходный код HTML, который содержит 25 продуктов с 1 сегментом кода, размещенного ниже

У меня очень мало опыта в области гибкости xpath и html. и я работаю над классным проектом, чтобы сравнить цены на жилье и склада для нескольких предметов.

Я хочу сохранить строку data_price = "14.97";и строка item = "Leaktite 5-Gal. Blue Bucket (Pack of 3)"

ниже - часть исходного кода, с которым я работаю

<div class="pod-inner">
                <div class="productlist plp-pod__compare">
                                <div class="checkbox-btn js-podclick-analytics" data-podaction="compare">
                                        <input type="checkbox" data-img="https://images.homedepot-static.com/productImages/8c1c50a0-e17c-4624-9e9e-35653052c1ce/svn/leaktite-paint-buckets-lids-209334-64_400_compressed.jpg" data-uom="&nbsp;/package" data-price="$14.97" data-title="Leaktite 5-Gal. Blue Bucket (Pack of 3)" value="203924937" id="compare203924937" name="product" autocomplete="off" class="checkbox-btn__input">

. Я получил

            HtmlDocument doc = new HtmlDocument();    
            string home_bucket_url="https://www.homedepot.com/s/5%2520gallon%2520bucket?NCNI-5";
            WebClient client = new WebClient();
            string home_bucket_raw = client.DownloadString(home_bucket_url);
            var findclasses = doc.DocumentNode.Descendants("input type").Where(d => d.Attributes.Contains("checkbox"));
            foreach (var x in findclasses)
            {
                Console.WriteLine(x.ToString());
            }

1 Ответ

0 голосов
/ 04 ноября 2019

Если вы успешно выбрали нужный вам узел (пожалуйста, отладка, чтобы убедиться), вы можете просто получить значения атрибутов, которые вам нужны. Примерно так:

x.Attributes["data-price"].Value;
x.Attributes["data-title"].Value;
...