Python 使用XPATH进行属性切片?

Python 使用XPATH进行属性切片?,python,xml,xpath,scrapy,Python,Xml,Xpath,Scrapy,假设我们有以下html代码段: ... <section> <a href="https://example.com" data-utag="{"sku":"12340", "abc":"Lorem ipsum"}">sometext</a> </section> ... 。。。 ... 使用XPATH,如何从数据utag中仅提取SKU值(即12340)?在html标记中使用单引号而不是双引号将使此/scrapy脚本正常工作: from

假设我们有以下html代码段:

...
<section>
    <a href="https://example.com" data-utag="{"sku":"12340", "abc":"Lorem ipsum"}">sometext</a>
</section>
...
。。。
...

使用XPATH,如何从数据utag中仅提取SKU值(即12340)?

在html标记中使用单引号而不是双引号将使此/scrapy脚本正常工作:

from parsel import selector
import json

sel = selector.Selector(text=u"""<section><a href='https://example.com' data-utag='{"sku":"12340", "abc":"Lorem ipsum"}'>sometext</a></section>""")

jsontxt = sel.xpath("string(.//section/a/@data-utag)").extract()[0]

loaded = json.loads(jsontxt)

print(loaded["sku"])
来自parsel导入选择器的

导入json
sel=选择器。选择器(文本=u“”
jsontxt=sel.xpath(“字符串(.//section/a/@data-utag)”).extract()[0]
loaded=json.loades(jsontxt)
打印(已加载[“sku”])

我很确定你不能。由于滥用了
,该代码段不是格式良好的XML文档的一部分。如果所有这些值都是这样,您可以通过
节点.attrib[“data utag”]
访问整个值,并使用
eval(value)
将其作为Python字典阅读。或者,您可以执行一些快速的脏字符串拆分。忽略引号问题,您可以将正则表达式与xpath结合使用(请参阅)[,所以可能是这样。这取决于数据格式。这个确切的字符串,当然,但如果它类似于python dict的字符串表示形式,那么一般来说它需要一个解析器。我没有提到结构,但SKU对我来说是有价值的数据。这个示例取自一个市场。他们使用数据utag,其中包含一个字典。