gpt4 book ai didi

python - cElementTree <类型 'exceptions.SyntaxError' > : not well-formed (invalid token)

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:51 24 4
gpt4 key购买 nike

尝试使用 urllib 和 cElementTree 在网络上抓取此 xml 文件。我正在使用 Google App Engine,但我认为该问题与我的平台无关。

这是我的错误:

<type 'exceptions.SyntaxError'>: not well-formed (invalid token): line 1, column 25
Traceback (most recent call last):
File "/base/data/home/apps/metautoit/daily-update.353244196034914877/Start_Update.py", line 25, in main
ShoppingCar.XMLRipper().getNew()
File "/base/data/home/apps/metautoit/daily-update.353244196034914877/updatecars/sitecrawlers/ShoppingCar.py", line 24, in getNew
for carDict in newCars:
File "/base/data/home/apps/metautoit/daily-update.353244196034914877/updatecars/sitecrawlers/ShoppingCar.py", line 67, in _iter_carDicts_in_xml
tree = self.get_xml()
File "/base/data/home/apps/metautoit/daily-update.353244196034914877/updatecars/sitecrawlers/ShoppingCar.py", line 63, in get_xml
return ET.parse(req, parser=parser)
File "<string>", line 45, in parse
File "<string>", line 28, in parse

xml 文件很长,但这里是一个示例:

<?xml version="1.0" encoding="windows-1252"?><veicoli>
<veicolo>
<id><![CDATA[16529]]></id>
<link><![CDATA[http://www.shoppingcar.it/auto_usate_/Chrysler_PT_Cruiser/16529.asp]]></link>
<marca><![CDATA[Chrysler]]></marca>
<modello><![CDATA[PT Cruiser]]></modello>
<versione><![CDATA[2.4 L]]></versione>
<provincia><![CDATA[Padova]]></provincia>
<anno><![CDATA[2006]]></anno>
<mese><![CDATA[4]]></mese>
<chilometri><![CDATA[26000]]></chilometri>
<cilindrata><![CDATA[]]></cilindrata>
<potenza><![CDATA[143]]></potenza>
<alimentazione><![CDATA[Benzina]]></alimentazione>
<cambio><![CDATA[Cambio Automatico]]></cambio>
<colore><![CDATA[nero]]></colore>
<prezzo><![CDATA[14900]]></prezzo>
<immagine><![CDATA[http://www.shoppingcar.it/public/Auto%20Usate/Berline/imagesadv/16529_2.jpg]]>
</immagine>
</veicolo>
</veicoli>

我的(简化的)代码如下所示:

xml_url =   "http://www.shoppingcar.it/feed/export_vel.asp?parametro=1"
req = urllib.urlopen(xml_url)
parser = ET.XMLParser(encoding="windows-1252")
tree = ET.parse(req, parser=parser).get_xml()

关键在于:我将其下载并上传为公共(public)保管箱文件。使用这个 url 可以很好地解析 xml。我尝试过不声明编码,并尝试过 windows-1252 和 utf-8 编码。这真的很奇怪,因为第 25 列只不过是“编码”一词的中间。如有任何帮助,我们将不胜感激。

最佳答案

我尝试了你的代码(添加了导入,以便其他人可以尝试):

#!/usr/bin/env python
import xml.etree.cElementTree as ET
import urllib

xml_url = "http://www.shoppingcar.it/feed/export_vel.asp?parametro=1"
req = urllib.urlopen(xml_url)
parser = ET.XMLParser(encoding="windows-1252")
tree = ET.parse(req, parser=parser).get_xml()

它运行得很好。如果您的错误仅发生在服务器上,那么您可能会遇到网页限制并尝试解析错误消息。因此,请确保您实际上正在解析文档(例如 data = req.read() ),然后转储数据并将字符串解析为 xml。

关于python - cElementTree <类型 'exceptions.SyntaxError' > : not well-formed (invalid token),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com