我有一个显示一些值的HTML页面。我还有一个小应用程序显示我的其他一些页面的数据,但这些其他页面是JSON,而不是HTML。 我想从HTML页面中使用这些值,转换为JSON,然后输出。
我想这样做的原因是我可以简单地重用我的代码,只需更改URL,甚至可以动态创建它。
我使HTML页面尽可能简单,以便去除所有垃圾,以使正则表达式更基本。
这是HTML:
<div class="BlockA">
<h4>BlockA</h4>
<div class="name">John Smith</div>
<div class="number">2</div>
<div class="name">Paul Peterson</div>
<div class="number">14</div>
</div>
<div class="BlockB">
<h4>BlockB</h4>
<div class="name">Steve Jones</div>
<div class="number">5</div>
</div>
两个块都有不同数量的元素,具体取决于几个因素。
这是我的python:
def index(request, toGet="xyz"):
file = urllib2.urlopen("http://www.mysite.com/mypage?data="+toGet)
data = file.read()
dom = parseString(data)
rows = dom.getElementsByTagName("BlockA")[0]
readIn = ""
for row in rows:
readIn = readIn+json.dumps(
{'name': row.getAttribute("location"),
'number': row.getAttribute("number")},
sort_keys=True,
indent=4)+","
response_generator = ( "["+readIn[:-1]+"]" )
return HttpResponse(response_generator)
所以这基本上是读取值(实际上,在这种情况下源是XML),循环遍历它们,并输出所有值。
如果有人能指出我正确的方向,我将不胜感激。例如,读取像“BlockA”这样的标签,然后读取标签“name”和“number”。
感谢。
答案 0 :(得分:2)
如果您真的需要在Python中解析HTML页面,那么您应该使用Beautiful Soup。我怀疑你是否真的应该这样做。 HTML页面和JSON输出是否使用相同的Django实例?它们是否属于同一个项目?
如果他们 分开同一个项目,那么你可以使用类似django-piston的东西,这是一个用于python的RESTful框架。这将允许您定义应公开的数据,并以多种格式输出,如HTML / Django Template,JSON,XML或YAML。您还可以创建自己的发射器,以便以不同的格式输出。
这样,您可以将特定URL公开为常规模板,或者获取与JSON相同的数据将比HTML更容易解析。
对不起,如果我误解了你的问题。但它确实听起来像是要将视图公开为几种不同的格式,而RESTful框架将有助于此。