TypeError:参数必须为字节或Unicode,得到'_Element'

问题描述 投票:0回答:1

具有此Python脚本由于某种原因而产生错误。错误是:

    Traceback (most recent call last):
  File "scraper2.py", line 79, in <module>
    etree.SubElement(coinx, "trader", {'variable': coinx}).text = prices[coin]["trader"]
  File "src/lxml/etree.pyx", line 3136, in lxml.etree.SubElement
  File "src/lxml/apihelpers.pxi", line 199, in lxml.etree._makeSubElement
  File "src/lxml/apihelpers.pxi", line 194, in lxml.etree._makeSubElement
  File "src/lxml/apihelpers.pxi", line 323, in lxml.etree._initNodeAttributes
  File "src/lxml/apihelpers.pxi", line 334, in lxml.etree._addAttributeToNode
  File "src/lxml/apihelpers.pxi", line 1538, in lxml.etree._utf8
TypeError: Argument must be bytes or unicode, got '_Element'

导致此问题的脚本是:

root = etree.Element("root")

for coin in prices:
    coinx=etree.Element("coin")
    etree.SubElement(coinx, "trader", {'variable': coinx}).text = prices[coin]["trader"]
    etree.SubElement(coinx, "metal").text = prices[coin]["metal"]
    etree.SubElement(coinx, "type").text = prices[coin]["type"]
    etree.SubElement(coinx, "price").text = prices[coin]["price"] # Needs scraper code to function correctly
    root.append(coinx)

fName = 'data.xml'
with open(fName, 'wb') as f:
    # remove encoding here, in case you want escaped ASCII characters: &#163;
    f.write(etree.tostring(root, xml_declaration=True, encoding="utf-8", pretty_print=True))

脚本旨在将信息输出到XML文件(data.xml)。

使用LXML python模块的新手,似乎无法找到解决方法。如果有人可以帮助我,那就太好了!谢谢!

python lxml
1个回答
0
投票

问题的答案在您的堆栈跟踪的初始部分:

© www.soinside.com 2019 - 2024. All rights reserved.