我有这样的文件用Python解析(来自报废):
some HTML and JS here...
SomeValue =
{
'calendar': [
{ 's0Date': new Date(2010, 9, 12),
'values': [
{ 's1Date': new Date(2010, 9, 17), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 18), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 19), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 20), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 21), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 22), 'price': 9900 },
{ 's1Date': new Date(2010, 9, 23), 'price': 9900 }]
},
'data': [{
index: 0,
serviceClass: 'Economy',
prices: [9900, 320.43, 253.27],
eTicketing: true,
segments: [{
indexSegment: 0,
stopsCount: 1,
flights: [{
index: 0,
... and a lot of nested data and again HTML and JS...
我需要解析它并提取所有json数据。现在我使用正则表达式清理所有'\ n'和'\ t'以及eval()函数将其转换为Python字典..我真的不喜欢这个解决方案,尤其是eval()。但我查看了BeautifulSoup和lxml,并没有找到有助于解析它的东西 你能为这项任务提出比正则表达式和eval()更好的建议吗? 页面示例:http://codepaste.ru/3830/
答案 0 :(得分:5)
使用json
模块处理JSON数据:
import json
json.loads( <string> )
使用BeautifulSoup
或lxml
处理解析html页面:
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup( <string> )
如果您需要特定帮助,则需要提供特定数据,例如:包含此数据的标记的类。例如,您可以soup.findAll
脚本标记,然后删除一些行以获取JSON,然后将其提取到json.loads
。