Я новичок в C#, поэтому это может быть очень очевидно, как заставить это работать или слишком сложно для меня, но я пытаюсь настроить и очистить веб-страницу с помощью HtmlAgilityPack. В настоящее время мой код компилируется, но когда я пишу строку, я получаю только 1 результат, и это последний результат из li в ul. Причина разделения строк заключается в том, что я могу в конечном итоге вывести строки заголовка и описания в .csv для дальнейшего использования. Я просто не уверен, что делать дальше, поэтому я прошу любую помощь/понимание/идеи/мысли/предложения, которые могут быть предложены. Спасибо!Веб-скребок с использованием HtmlAgilityPack
private void button1_Click(object sender, EventArgs e)
{
List<string> cities = new List<string>();
//var xpath = "//h2[span/@id='Cities']";
var xpath = "//h2[span/@id='Cities']" + "/following-sibling::ul[1]" + "/li";
WebClient web = new WebClient();
String html = web.DownloadString("http://wikitravel.org/en/Vietnam");
hap.HtmlDocument doc = new hap.HtmlDocument();
doc.LoadHtml(html);
foreach (hap.HtmlNode node in doc.DocumentNode.SelectNodes(xpath))
{
string all = node.InnerText;
//splits text between '—', '-' or ' ' into 2 parts
string[] split = all.Split(new char[] { '—', ' ', '-' }, StringSplitOptions.None);
string title;
string description;
int nodeCount;
nodeCount = node.ChildNodes.Count;
if (nodeCount == 2)
{
title = node.ChildNodes[0].InnerText;
description = node.ChildNodes[1].InnerText;
}
else if (nodeCount == 4)
{
title = node.ChildNodes[0].InnerText;
description = node.ChildNodes[1].InnerText + node.ChildNodes[2].InnerText;
}
else
{
title = "Error";
description = "The node cound was not 2 or 3. Check the div section.";
}
System.IO.StreamWriter write = new System.IO.StreamWriter(@"C:\Users\cbrannin\Desktop\textTest\testText.txt");
write.WriteLine(all);
write.Close();
}
}
}
Этот отпечаток отлично работает, и я дурак для того, чтобы начать использовать его в неправильном месте. Все города теперь печатают в текстовый файл. Причина названия и описания состоит в том, чтобы имя города заполнило эту строку, а затем описание города заполнило строку описания, поэтому я могу настроить CSV-файл для использования этих данных позже. В этом причина расщепления этих персонажей - «,», «-». Идея состоит в том, чтобы настроить эти данные в формате .csv, ключевое слово - идея ... Спасибо за ответ! – cbrannin
@cbrannin: Если это решило вашу проблему, отметьте ее как принятый ответ. –