“类型'lxml.etree._ElementUnicodeResult'无法序列化”

时间:2018-11-24 15:35:55

标签: python web-scraping lxml

我正在使用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.

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我也很难将'lxml.etree._ElementUnicodeResult'转换为字符串。 在调用TypeError: 'bytes' object is not callable函数时总是出现错误str()。 然后我找到了以下链接。

https://lxml.de/api/lxml.etree._ElementUnicodeResult-class.html

您可以看到_ElementUnicodeResultunicode继承了很多功能。

我使用了__str__()函数,将其转换为字符串类型。

它也直接支持许多其他字符串操作。您可以签入链接。希望这会有所帮助;)

答案 1 :(得分:0)

return{ D: D }; 变量是_ElementUnicodeResult对象(字符串的一种特殊类型)。您不能将其用作tostring()的参数。

i变量(XPath评估的结果)是所需的字符串列表。如果此列表的元素必须是纯字符串而不是a对象,则可以使用列表理解:

_ElementUnicodeResult