首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“不能序列化'lxml.etree._ElementUnicodeResult‘类型’”

“不能序列化'lxml.etree._ElementUnicodeResult‘类型’”
EN

Stack Overflow用户
提问于 2018-11-24 15:35:54
回答 3查看 8K关注 0票数 6

我使用lxml从网页中提取数据,但无法将结果的ElementUnicode对象转换为字符串。这是我的代码:

代码语言:javascript
运行
复制
from lxml import html
from lxml import etree
from lxml.etree import tostring

url = 'https://www.imdb.com/title/tt5848272/?pf_rd_m=A2FGELUUNOQJNL&pf_rd_p=2413b25e-e3f6-4229-9efd-599bb9ab1f97&pf_rd_r=9S5A89ZHEXE4K8SZBC40&pf_rd_s=right-2&pf_rd_t=15061&pf_rd_i=homepage&ref_=hm_otw_t0'

page = requests.get('url')
tree = html.fromstring(page.content)

a = tree.xpath('//div[@class="credit_summary_item"]/a[../h4/text() = "Directors:"]/text()')
mynewlist = []
for i in a:
  b = etree.tostring(i, method="text")
  mynewlist.append(b)

下面是我遇到的错误:

代码语言:javascript
运行
复制
TypeError: Type 'lxml.etree._ElementUnicodeResult' cannot be serialized.

任何帮助都将不胜感激。

EN

Stack Overflow用户

回答已采纳

发布于 2018-11-25 11:00:06

i变量是一个_ElementUnicodeResult对象(一种特殊类型的字符串)。您不能将它用作tostring()的参数。

a变量( XPath计算的结果)是您想要的字符串列表。如果此列表的元素必须是普通字符串而不是_ElementUnicodeResult对象,则可以使用列表理解:

代码语言:javascript
运行
复制
newlist = [str(s) for s in a]
票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53459703

复制
相关文章

相似问题

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