用ajax json里面解析html

时间:2010-08-26 13:28:50

标签: python json screen-scraping html-parsing web-scraping

我有这样的文件用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/

1 个答案:

答案 0 :(得分:5)

aarrghhh no regex dont use regex no regex no no nooooooo


使用json模块处理JSON数据:

import json
json.loads( <string> )

使用BeautifulSouplxml处理解析html页面:

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup( <string> )

如果您需要特定帮助,则需要提供特定数据,例如:包含此数据的标记的类。例如,您可以soup.findAll脚本标记,然后删除一些行以获取JSON,然后将其提取到json.loads