Parsing Html敏捷包xPath问题
我正在开发一个.Net控制台应用程序。Parsing Html敏捷包xPath问题,parsing,xpath,html-agility-pack,Parsing,Xpath,Html Agility Pack,我正在开发一个.Net控制台应用程序。 我想请求一个HTML页面,然后获取其中的一些数据。 我使用从响应HTML页面构建对象模型,并使用xPath选择节点 以下是响应HTML页面的摘录: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w
我想请求一个HTML页面,然后获取其中的一些数据。
我使用从响应HTML页面构建对象模型,并使用xPath选择节点 以下是响应HTML页面的摘录:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- ... -->
<body>
<div class="conteneur">
<!-- ... -->
<div class="page">
<div class="inter_page">
<!-- ... -->
<form action="missions.html" method="post" id="formliste">
<table class="tbl_deco_mini" cellspacing="0" style="width: 30%; margin: 0px;">
<tr>
<!-- ... -->
</tr>
<tr>
<td colspan="2" class="td">
<div class="inliste">
<p class="ligne_epee">
<a id="3"></a><a href="http://ffta.mimigyaru.com/missions,affiche_001-moisson-dherbe.html#3"
class="simple">
<img src="http://ffta.mimigyaru.com/medias/divers/mission_batail.png" alt="Moisson d'herbe"
class="img_middle" title="Moisson d'herbe" /></a> <a href="http://ffta.mimigyaru.com/missions,affiche_001-moisson-dherbe.html#3">001-Moisson
d'herbe</a>
</p>
<!-- ... -->
</div>
</td>
</tr>
<tr>
<!-- ... -->
</tr>
</table>
</form>
</div>
</div>
<!-- ... -->
</div>
</body>
</html>
我想选择
节点,它是
节点的第一个子节点。我编写了以下代码:
HtmlDocument l_missionsDoc = new HtmlDocument();
l_missionsDoc.Load(l_stream);
XPathNavigator l_navigator = l_missionsDoc.CreateNavigator();
XPathNodeIterator l_iterator = l_navigator.Select("//form[@id='formliste']/table");
if (l_iterator.Count <= 0) continue;
HtmlDocument l_commissionsdoc=new HtmlDocument();
l_任务文档加载(l_流);
XPathNavigator l_navigator=l_任务doc.CreateNavigator();
XPathNodeIterator l_iterator=l_navigator。选择(“//form[@id='formliste']/table”);
如果(l_iterator.Count,这是因为HTML Agility Pack对表单标记进行了特殊处理。原因如下所述:
因此,您基本上需要删除该特殊处理,如下所示(必须在任何加载之前发生):
//指示库像对待任何其他标记一样对待表单
HtmlNode.ElementsFlags.Remove(“表单”);
HtmlDocument l_任务doc=新HtmlDocument();
l_任务文档加载(l_流);
XPathNavigator l_navigator=l_任务doc.CreateNavigator();
XPathNodeIterator l_iterator=l_navigator。选择(“//form[@id='formliste']/table”);
if(l_iterator.Count)
// instruct the library to treat FORM like any other tag
HtmlNode.ElementsFlags.Remove("form");
HtmlDocument l_missionsDoc = new HtmlDocument();
l_missionsDoc.Load(l_stream);
XPathNavigator l_navigator = l_missionsDoc.CreateNavigator();
XPathNodeIterator l_iterator = l_navigator.Select("//form[@id='formliste']/table");
if (l_iterator.Count <= 0) continue;