.net Http敏捷包-访问同级?
使用HTML敏捷包对于获取子体和整个表等非常有用。。。但是,在下面的情况下,如何使用它呢.net Http敏捷包-访问同级?,.net,html,html-agility-pack,html-content-extraction,scrape,.net,Html,Html Agility Pack,Html Content Extraction,Scrape,使用HTML敏捷包对于获取子体和整个表等非常有用。。。但是,在下面的情况下,如何使用它呢 ...Html Code above... <dl> <dt>Location:</dt> <dd>City, London</dd> <dt style="padding-bottom:10px;">Distance:</dt> <dd style="padding-bottom:10px;">0 miles
...Html Code above...
<dl>
<dt>Location:</dt>
<dd>City, London</dd>
<dt style="padding-bottom:10px;">Distance:</dt>
<dd style="padding-bottom:10px;">0 miles</dd>
<dt>Date Issued:</dt>
<dd>26/10/2010</dd>
<dt>type:</dt>
<dd>cement</dd>
</dl>
...HTML Code below....
…上面的Html代码。。。
地点:
伦敦市
距离:
0英里
发布日期:
26/10/2010
类型:
水泥
…下面是HTML代码。。。。
如果英里数小于15,你怎么能找到呢?在这种情况下,我不知道你可以对元素做些什么,但是你必须让所有元素都找到正确的一个,然后找到数字来检查它的值吗?或者有没有更好的方法使用带有Agility pack的正则表达式来实现这一点…我很确定(没有检查)它支持以下同级::
轴,因此您可以找到节点“dt[.='Distance:']”“
然后找到节点。选择SingleNode(“以下同级::dd[1]”或(更简单)如果您确定dd
总是紧跟在dt
之后,只需使用node.NextSibling
例如:
string distance = doc.DocumentNode.SelectSingleNode(
"//dt[.='Distance:']/following-sibling::dd").InnerText;
仅获取html兄弟姐妹
public static List<HtmlNode> GetHtmlNodeList(string html)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var regs = doc.DocumentNode.SelectSingleNode("//div");
var first = regs.Descendants().FirstOrDefault();
var second = first.NextSibling;
List<HtmlNode> list = new List<HtmlNode>();
while (second != null)
{
list.Add(second);
second = CheckSibling(second);
}
return list;
}
private static HtmlNode CheckSibling(HtmlNode node)
{
node = node.NextSibling;
return node;
}
公共静态列表GetHtmlNodeList(字符串html)
{
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(html);
var regs=doc.DocumentNode.SelectSingleNode(//div);
var first=regs.subjects().FirstOrDefault();
var second=first.NextSibling;
列表=新列表();
while(秒!=null)
{
列表。添加(第二);
第二个=校验兄弟(第二个);
}
退货清单;
}
私有静态HtmlNode校验同级(HtmlNode节点)
{
node=node.NextSibling;
返回节点;
}