我需要加载XML文件并将内容转换为面向对象的Python结构.我想接受这个:
<main>
<object1 attr="name">content</object>
</main>
Run Code Online (Sandbox Code Playgroud)
把它变成这样的东西:
main
main.object1 = "content"
main.object1.attr = "name"
Run Code Online (Sandbox Code Playgroud)
XML数据将具有比这更复杂的结构,我不能硬编码元素名称.解析时需要收集属性名称并将其用作对象属性.
如何将XML数据转换为Python对象?
试着做以下......
from lxml import etree
from lxml.etree import fromstring
if request.POST:
parser = etree.XMLParser(ns_clean=True, recover=True)
h = fromstring(request.POST['xml'], parser=parser)
return HttpResponse(h.cssselect('itagg_delivery_receipt status').text_content())
Run Code Online (Sandbox Code Playgroud)
但它给出了这个错误:
[Fri Apr 05 10:27:54 2013] [error] Internal Server Error: /sms/status_postback/
[Fri Apr 05 10:27:54 2013] [error] Traceback (most recent call last):
[Fri Apr 05 10:27:54 2013] [error] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 115, in get_response
[Fri Apr 05 10:27:54 2013] [error] response = callback(request, *callback_args, **callback_kwargs)
[Fri Apr 05 10:27:54 2013] [error] File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 77, in wrapped_view
[Fri …Run Code Online (Sandbox Code Playgroud) 我正在尝试像这里提供的那样使用HTML scraper .它适用于他们提供的示例.但是,当我尝试在我的网页上使用它时,我收到此错误 - Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.
我尝试使用Google搜索但无法找到解决方案.我真的很感激任何帮助.我想知道是否有办法使用Python将其复制为HTML.
编辑:
from lxml import html
import requests
page = requests.get('http://cancer.sanger.ac.uk/cosmic/gene/analysis?ln=PTEN&ln1=PTEN&start=130&end=140&coords=bp%3AAA&sn=&ss=&hn=&sh=&id=15#')
tree = html.fromstring(page.text)
Run Code Online (Sandbox Code Playgroud)
谢谢.