我正在使用lxml从网页中提取数据,但是无法将所得的ElementUnicode对象转换为字符串。这是我的代码:
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)
这是我得到的错误:
TypeError: Type 'lxml.etree._ElementUnicodeResult' cannot be serialized.
任何帮助将不胜感激。
答案 0 :(得分:2)
我也很难将'lxml.etree._ElementUnicodeResult'
转换为字符串。
在调用TypeError: 'bytes' object is not callable
函数时总是出现错误str()
。
然后我找到了以下链接。
https://lxml.de/api/lxml.etree._ElementUnicodeResult-class.html
您可以看到_ElementUnicodeResult
从unicode
继承了很多功能。
我使用了__str__()
函数,将其转换为字符串类型。
它也直接支持许多其他字符串操作。您可以签入链接。希望这会有所帮助;)
答案 1 :(得分:0)
return{ D: D };
变量是_ElementUnicodeResult
对象(字符串的一种特殊类型)。您不能将其用作tostring()
的参数。
i
变量(XPath评估的结果)是所需的字符串列表。如果此列表的元素必须是纯字符串而不是a
对象,则可以使用列表理解:
_ElementUnicodeResult