Погружение в данные диапазона - анализ HTML-сайта - PullRequest
0 голосов
/ 03 июля 2018

Я пытался получить все названия ресторанов на сайте https://www.yemeksepeti.com/en/istanbul/zeytinburnu-merkezefendi-mah-cevizlibag используя пакет HtmlAgilityPack:

Uri url = new Uri("https://www.yemeksepeti.com/en/istanbul/zeytinburnu-merkezefendi-mah-cevizlibag");
WebClient client = new WebClient();
string downloadString = client.DownloadString(url);

HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(downloadString);

HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//a[@class='restaurantName withTooltip']");

foreach(var node in nodes) {
  listBox1.Items.Add(node.InnerText);
}

Этот работает хорошо!

Но с другой стороны, я действительно хочу погрузиться глубже и получить MainCuisineName ниже:

<a class="restaurantName withTooltip" href="/en/meshur-merkez-kofte-zeytinburnu-merkezefendi-mah-istanbul" target="_parent" data-hasqtip="1">
  <span data-tooltip="{&quot;MainCuisineName&quot;:&quot;Meatball&quot;&quot;cc_genel.gif}">Meşhur Merkez Köfte, Zeytinburnu (Merkezefendi Mah.)</span>
</a>

Как я могу получить MainCuisineName, который является "Фрикаделька", из тот же URL? Я попробовал это:

HtmlNodeCollection nameNodes = doc.DocumentNode.SelectNodes("//*[@class='restaurantName withTooltip']/span='MainCuisineLabelName'");

foreach(var node in nameNodes) {
  listBox1.Items.Add(node.InnerText);
}

Но, по-видимому, он не работает.

Есть предложения?

1 Ответ

0 голосов
/ 24 ноября 2018

Вот что я получаю:

Uri filteredurl = new Uri("https://www.yemeksepeti.com/en/istanbul/zeytinburnu-merkezefendi-mah-cevizlibag#kt:b5ceacf5-9724-4751-a600-78d35cfcf72b,24ef27f9-32d5-44ff-993c-21e59b0f6f83");

HtmlNodeCollection nodes = 
document.DocumentNode.SelectNodes("//a[@class='restaurantName withTooltip']");

foreach(var node in nodes) {
   listBox1.Items.Add(node.InnerText);
} 

Тогда используйте фильтры: #kt:b5ceacf5-9724-4751-a600-78d35cfcf72b, 24ef27f9-32d5-44ff-993c-21e59b0f6f83 и повторите поиск. Каждая категория (Meatball, FastFood и т. Д.) Имеет уникальный фильтр. Проверьте эту ссылку тоже, у вас есть идея.

...