首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lxml / scrapy选择器不能传输html实体吗

lxml / scrapy选择器不能传输html实体吗
EN

Stack Overflow用户
提问于 2019-11-06 06:16:55
回答 1查看 123关注 0票数 1

如何在使用lxml / scrapy选择器xpath后获得原始的html实体?

我已经尝试了lxml而不是parsel包,同样的问题。

代码语言:javascript
复制
mytext = '<html><body><span>go&nbsp;od</span></body></html>'
sel = parsel.Selector(text=mytext)
sel.xpath('//body').extract()

实际输出:

代码语言:javascript
复制
['<body><span>go\xa0od</span></body>']

预期输出:

代码语言:javascript
复制
['<body><span>go&nbsp;od</span></body>']

&nbsp;被转换了,如何保持它的原样?

EN

回答 1

Stack Overflow用户

发布于 2019-11-06 07:00:35

根据文档,目前,.extract().getall()方法返回带有 unicode字符的原始html ,如\xa0,即&nbsp;。更多信息here

但是,.extract_first().get()方法仅返回列表中的第一个字符,并且输出为,不带 unicode字符。(Docs)

代码语言:javascript
复制
print(sel.xpath('//body').get())

输出:

代码语言:javascript
复制
<body><span>go od</span></body>

但是如果你真的想用&nbsp;字符代替''\xa0。然后,一种解决方案是对这些字符进行常规字符串替换。

示例:

代码语言:javascript
复制
body = sel.xpath('//body').extract()

result = [i.replace('\xa0', '&nbsp;') for i in body]

print(result)

输出:

代码语言:javascript
复制
['<body><span>go&nbsp;od</span></body>']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58720320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档