我正在用Scrapy解析XML文档,而XPath却遇到了麻烦。

我的XML看起来像这样:

<sdn:screen>
 <foaf:Image rdf:about="http://search.shinrokuden.irides.tohoku.ac.jp/shinrokuden/archive/screen/07f9d1a0-5ef4-11e2-91ca-000c2923bf22.jpg"/>
</sdn:screen>



我需要rdf:about=之后的网址。我正在使用scrapy的remove_namespaces()功能,因此不需要在XPath中使用名称空间。我尝试了以下XPath,但是它们都返回[]

xxs.select('//record/metadata/RDF/Resource/screen/Image/about').extract()

xxs.select('//record/metadata/RDF/Resource/screen/Image/@about').extract()

xxs.select('//record/metadata/RDF/Resource/screen/Image[@about]').extract()

xxs.select('//record/metadata/RDF/Resource/screen[@about]').extract()

xxs.select('//record/metadata/RDF/Resource/screen/@about').extract()


和许多其他类似的变体。

我知道到'//record/metadata/RDF/Resource/screen/Image'的路径是正确的,因为它输出数据,但是就像我说的那样,尝试访问“ rdf:about”部分的路径都由[]提供。我真的不认为名称空间是个问题,因为我删除了名称空间,但是我可能还是错了。

最佳答案

如果您仍在寻找属性的XPath:

//record/metadata/RDF/Resource/screen/Image/attribute::rdf:about


我还没有测试过,但是类似的东西会拉属性

您可以在http://www.w3schools.com/xpath/xpath_axes.asp上了解有关xpath的更多信息

关于python - 使用Scrapy获取XPath属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19204002/

10-14 18:26
查看更多