我正在尝试编写一个解析器来从典型的html表日/时间表中获取数据(如this)。
我想给这个解析器一个页面和一个表类/ id,让它返回一个事件列表,以及几天和几天。它们发生的时间。它应该考虑rowpans和colspans,因此对于链接的示例,它将返回
{:event => "Music With Paul Ray", :times => [T 12:00am - 3:00am, F 12:00am - 3:00am]}, etc.
我有点弄清楚使用ruby的半执行混乱方法,我想知道你如何解决这个问题?
答案 0 :(得分:2)
这里最好的办法是使用HTML解析器。使用HTML解析器,您可以以编程方式查看表行,而无需使用脆弱的正则表达式并自行进行解析。
然后你可以运行一些逻辑(这不是可运行的代码,只是一个你应该能够看到这个想法的草图):
for row in table:
i = 0
for cell in row: # skipping row 1
event = name
starttime = row[0]
endtime = table[ i + cell.rowspan + 1 ][0]
print event, starttime, endtime
i += 1
答案 1 :(得分:0)
这是该计划需要做的事情:
这是很多组件!您可能需要提出更具体的问题。
答案 2 :(得分:0)
使用http://www.crummy.com/software/BeautifulSoup/,该任务应该轻而易举。
答案 3 :(得分:0)
如上所述,在HTML上使用正则表达式通常是一个坏主意,你应该使用一个好的解析器
为了验证XHTML页面,您可以使用大多数语言中提供的简单XML解析器。唉,在您的情况下,给定页面不会验证(W3C的标记验证服务报告230错误,7警告!)
对于通用的,可能是格式错误的HTML,有处理它的库(kigurai推荐使用BeautifulSoup for Python,我也知道TagSoup for Java,还有其他)。