我正在使用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”部分的路径都会出现[]
。我真的不认为名称空间是一个问题,因为我删除了名称空间,但我再次错了。
答案 0 :(得分:2)
如果您仍在寻找属性的XPath:
//record/metadata/RDF/Resource/screen/Image/attribute::rdf:about
我还没有对它进行测试,但类似的东西会拉动属性
了解有关xpath的更多信息