我正在尝试检索与.jpg文件关联的URL。
我在Chrome中使用了各种XPath和检查工具,但始终最终会封装URL。示例:
绝对XPath参考:
/html/body/div[3]/div/div[2]/div[1]/ul[1]/li/img
返回:
<img src="test.com/Uploads/Picture/20150816/121atp-5-navigation/ATP5-9.jpg" xpath="1">
...在Chrome中,但在C#中没有结果(使用HTMLAgilityPack)
HTML:
<ul id="title-img" class="title-img" unselectable="on" style="-moz-user-select: none;">
<li style="" xpath="1">
<img src="test.com/Uploads/Picture/20150816/121atp-5-navigation/ATP5-9.jpg">
</li>
</ul>
C#代码(其中xpathQuery是上面的XPath引用,列表不返回任何结果):
private List<string> returnNodes(string xpathQuery, GeckoWebBrowser geckoWebBrowser)
{
List<string> nodes = new List<string>();
try
{
XPathResult xpathResult = geckoWebBrowser.Document.EvaluateXPath(xpathQuery);
var foundNodes = xpathResult.GetNodes();
foreach (var node in foundNodes)
{
var x = node.TextContent; // get text text contained by this node (including children)
GeckoHtmlElement element = node as GeckoHtmlElement; //cast to access.. inner/outerHtml
string inner = element.InnerHtml;
string outer = element.OuterHtml;
//iterate through child nodes
foreach (var child in node.ChildNodes)
{
nodes.Add(removeCarriageReturnsFromString(child.NodeValue));
}
}
}
catch (Exception ex)
{
MessageBox.Show(xpathQuery + " => " + ex.Message);
}
return nodes;
}
我正在寻找一个XPath查询,我可以在我的C#应用程序中使用它来仅输出URL。
答案 0 :(得分:1)
您可以在XPath中使用@
符号来获取属性,因此使用
/html/body/div[3]/div/div[2]/div[1]/ul[1]/li/img/@src
应仅返回URL。
答案 1 :(得分:1)
与其使用html的整个xpath可能会很脆弱并且容易出错,您应该尝试找出元素的更唯一路径。
我将使用contains方法,因为它可以克服这种脆弱性,并且在不确定元素的全部内容时很有用。
例如,以下xpath将返回所有 img 标签,这些标签包含 src 属性,该属性包括.jpg字符串:
//img[contains(@src, '.jpg')]
答案 2 :(得分:1)
我通过编写以下内容设法检索了URL。传入您的ABSOLUTE XPath参考。
private List<string> returnPictureNodes(string xpathQuery, GeckoWebBrowser geckoWebBrowser)
{
List<string> arrNodes = new List<string>();
try
{
GeckoImageElement img = (GeckoImageElement)geckoWebBrowser.Document.SelectSingle(xpathQuery);
arrNodes.Add(removeCarriageReturnsFromString(img.Src));
}
catch (Exception ex)
{
MessageBox.Show(xpathQuery + " => " + ex.Message);
}
return arrNodes;
}