我这里有这个代码来解析来自网络的som信息:
import lxml.html
from lxml.etree import XPath
import json
url = "http://gbgfotboll.se/information/?scr=table&ftid=51168"
date = '2014-09-27'
# use this in real mode: currentDate = (time.strftime("%Y-%m-%d"))
list = []
id = 0
score = ""
rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
time_xpath = XPath("td[1]/span/span//text()[2]")
team_xpath = XPath("td[2]/a/text()")
html = lxml.html.parse(url)
for row in rows_xpath(html):
time = time_xpath(row)[0].strip()
team = team_xpath(row)[0]
list.append("%d:"%id + time + " " + team + " " + score)
id += 1
print json.dumps(list)
打印:
0:13:00 Romelanda UF - IK Virgo (empty score for now)
1:15:00 Kode IF - IK Kongah\xe4lla (empty score)
etc..
我的第一个子问题是,一些解析后的数据将包含字母“唓䔓ö”我将如何修复,以便打印出正确的字母,如您在打印结果(第二行)中看到的那样“Kongah \ xe4lla”应该是“Konghälla”
主要问题我如何将该列表转换为字典,以便最终的json输出如下:
{"id":"0", "time":"13:00", "teams":"Romelanda UF - IK Virgo", "score":"empty" }
etc...
谢谢!!!
答案 0 :(得分:0)
对于你的第一个问题,\ xe4不是一个ascii字符,如果你想打印出来,可能你可以试着用一些编码来解码它似乎是" windows-1252"。
当我尝试这个时,它对我有用:
a='\xe4'
b=a.decode('windows-1252')
print b
关于第二个问题,只需将代码修改为:
for i,row in enumerate(rows_xpath(html)):
#
#
list.append({"id":str(i), "time":time, "teams":team, "score":score})
而且我认为你真的不想为你的名单命名"列出"它是python的关键词〜 祝你好运。
顺便说一句,枚举会自动生成索引,你仍然可以使用你的" id"相反,只是这个:
list.append({"id":str(id), "time":time, "teams":team, "score":score})