此查询适用于某些国家/地区,例如Germany
"//h2[span/@id='Cities' or span/@id='Other_destinations']" + "/following-sibling::ul[1]" + "/li";
HTML的格式为:
<h2>
<span id='Other_destination'></span>
</h2>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
但是,在像Afghanistan这样的国家/地区,Div的格式如下:
<h2>
<span id='Other_destination'></span>
</h2>
<ul
<li>...</li>
</ul>
<ul>
<li>...</li>
</ul>
所以问题就变成了,我如何处理像阿富汗这样的国家的事件"/following-sibling::ul[1]" + :/li"
只获得Div ='Other_destinations'中的第一个ul?我希望能够解决这个问题将有助于解决我在其他国家遇到的其他异常和格式问题。谢谢。
答案 0 :(得分:1)
我希望这段代码可以解决您的问题:
var xpath = "//ul[preceding-sibling::h2[span/@id='Cities' or span/@id='Other_destinations'] and following-sibling::h2[span/@id='Get_in']]" + "/li";
var doc = new HtmlDocument
{
OptionDefaultStreamEncoding = Encoding.UTF8
};
// You need to call a WebClient here and set to the html variable.
var html = String.Empty;
doc.LoadHtml(html);
using (var write = new StreamWriter("testText.txt"))
{
foreach (var node in doc.DocumentNode.SelectNodes(xpath))
{
var all = node.InnerText;
//Writes to text file
write.WriteLine(all);
}
}
上述XPath可以翻译为:
ul
和h2[span/@id='Cities' or span/@id='Other_destinations']
之间的所有h2[span/@id='Get_in']]
代码我发现所有网页在决赛中都有一个span
标记,id='Get_in'
。
我希望它能解决你的问题。