【问题】
对于html:
1 | <a href= "/search?q=weight+loss+site:.edu+inurl:blog+%22post+a+comment%22+-%22you+must+be+logged+in%22&newwindow=1&safe=strict&ei=XZp2UczlE8nYigeK5IHgCg&start=10&sa=N" class= "pn" id= "pnnext" style= "text-decoration:none;text-align:left" ><span class= "csb gbil ch" style= "background-position:-96px 0;width:71px" ></span><span style= "display:block;margin-left:53px;text-decoration:underline" >Next</span></a> |
想要使用xpath去选择此a,对于选择单个属性,可以使用的xpath是:
1 | //a[@id='pnnext'] |
或
1 | //a[@class='pn'] |
但是想要同时选择这两个属性,就不知道如何写了。
【解决过程】
1.参考:
XPATH – selection based on multiple attribute values
得到对应的写法:
1 | //a[@id='pnnext' and class='pn'] |
所以去用:
1 | HtmlNode nextHtmlNode = rootHtmlNode.SelectSingleNode( "//a[@id='pnnext' and class='pn']" ); |
结果找不到。
其中,确定html中是有:
<a href="/search?q=weight+loss+site:.edu+inurl:blog+%22post+a+comment%22+-%22you+must+be+logged+in%22&newwindow=1&safe=strict&ei=yU13UZy6GsiZiAfqmYCQCA&start=10&sa=N" class="pn" id="pnnext" style="text-decoration:none;text-align:left"><span class="csb gbil ch" style="background-position:-96px 0;width:71px"></span><span style="display:block;margin-left:53px;text-decoration:underline"><b>下一頁</b></span></a> |
的。
很是诡异。
2.换成:
1 | HtmlNode nextHtmlNode = rootHtmlNode.SelectSingleNode( "//a[@id='pnnext' and @class='pn']" ); |
试试,然后就可以了。
【总结】
Xpath中,要选择多个属性的写法是:
1 | //a[@id='pnnext' and @class='pn'] |
就可以匹配到:
<a … class="pn" id="pnnext" …">xxx</a> |
了。
转载请注明:在路上 » 【已解决】C#中的Xpath选择多个属性