C# 选择带XPath的“src”值到HtmlAgilityPack

C# 选择带XPath的“src”值到HtmlAgilityPack,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,我正在开发一个爬行引擎。我的程序通过Xpath和HtmlAgilityPack爬行网站。我需要一些图像src标签的直接。你可以在下面看到我的简单代码,它不能正常工作,谢谢你的建议 PS:请忽略字符问题,XPath模式由数据库提供 这是我需要爬网的线,*..*部分显示要提取的块 <img id="product_photo" src="*/images/thumb/4400/10280/st.jpg*"> 有些页面在元标记中提供图像,因此.Attributes[src]不起作用 更新

我正在开发一个爬行引擎。我的程序通过Xpath和HtmlAgilityPack爬行网站。我需要一些图像src标签的直接。你可以在下面看到我的简单代码,它不能正常工作,谢谢你的建议

PS:请忽略字符问题,XPath模式由数据库提供

这是我需要爬网的线,*..*部分显示要提取的块

<img id="product_photo" src="*/images/thumb/4400/10280/st.jpg*">
有些页面在元标记中提供图像,因此.Attributes[src]不起作用


更新:您可以在此处查看我的查询和结果

您无法在使用中获取src或任何其他属性的值:

Agility.DocumentNode.SelectSingleNode(yourXpath);
仅通过使用:

string s=Agility.DocumentNode.SelectSingleNode(yourXpath).value;

这是因为XPath无法通过在HtmlAgilityPack类中选择SingleNode func返回属性值。因此,您必须使用SelectSingleNodeyourXpath.value或在标记后使用Regex只获取src而不获取outerText。

img[@id=product\u photo]/@src返回什么?另外,你试过使用单引号://img[@id='product\u photo']/@src吗?我也建议使用//img[@id='product\u photo']/@srcIt返回HtmlNode对象,但我只想使用src,或者可以是content或其他东西作为字符串,单引号不起作用。你能尝试转义内部引号,看看会发生什么://img[@id=\product\u photo\]/@src。最后,如果这不起作用,请尝试使用前缀。:/img[@id=\product\u photo\]/@src。它返回HtmlNode对象,但我只想使用src,也可以是content或其他内容作为字符串。如果我使用Agility.DocumentNode.SelectSingleNode//img[@id=product\u photo]/@src.Attributes[src].Value;然后它就起作用了。但是我不能使用.Attributes
string s=Agility.DocumentNode.SelectSingleNode(yourXpath).value;