带有原子名称空间的Xpath以供抓取

时间:2019-01-04 22:35:26

标签: xpath scrapy namespaces

我正在尝试使用scrapy从xml文件中刮取数据。 该文件的结构如下:

<feed xml:base="https://example.com/sap/...">
<entry><id>http://example.com/.../idset</id>
<m:properties>
<d:SubID>xyz</d:JobID>
<d:Posting>123456</d:Posting>
<d:Title>BoringTitle</d:Title>
</m:properties>
</entry>
</feed>

在Scrapy中,我导入atom命名空间:

xxs = XmlXPathSelector(response)
xxs.register_namespace("atom", "http://www.w3.org/2005/Atom")

并且可以提取某些数据

xxs.xpath("//atom:entry").extract()

但是,我发现用冒号选择数据是不可能的:

<d:Title>BoringTitle</d:Title>

打印标题的正确xpath是什么? 也许有一个简单的答案,我是一名机械工程师,为一个业余项目做这个。

任何帮助将不胜感激!

亲切的问候

约翰

1 个答案:

答案 0 :(得分:0)

mentioned in the question comments一样,您还需要为d添加一个名称空间。

但是,对于您而言,最好remove all namespaces并在没有它们的情况下工作。