抓取HTML表并在PHP中创建XML

时间:2013-03-27 13:59:41

标签: php html xml curl

我已经写了一个PHP脚本登录到我们的学校笔记系统。但我正在尝试将HTML页面解析为xml。但是我遇到了一些麻烦。首先,表格的html代码有点乱,我不知道现在要做什么。

这是CURL PHP页面:http://koetse.eu/test/curl.php。 这是回复的源代码:http://pastebin.com/RDawmsnY

我正在尝试将该Messy HTML tabel更改为xml文件,看起来有点像:

<?xml version="1.0" ?> > 
<notes>
    <name>Jurre (4HC)</name>
            <class>kwt</class>
            <class>netl</class>
                    <note>6.6</note>
                    <note>6.3</note>
                    <note>4.9</note>
                    <se>5.8</se>
            <class>entl</class>
                    <note>7.5</note>
                    <note>7.3</note>
                    <note>7.7</note>
                    <note>10.0</note>
                    <note>6.6</note>
                    <note>9.6</note>
                    <note>6.7</note>
                    <note>6.7</note>
                    <se>8.6</se>
            <class>lv</class>
                    <note>7.8</note>
                    <note>4.8</note>
                    <se>6.3</se>
</notes>

等...(我只将前三行作为例子)

很抱歉使用了pastebin,但是我在帖子的最大长度上打了一场比赛。

关心Jurre

2 个答案:

答案 0 :(得分:0)

该HTML文档确实看起来很糟糕。我认为你不能用DOM解析器或类似XML的任何XML来解析它。

我建议尝试正则表达式方法。

类名称显示在一个很好的未编号列表中,因此您可以通过查找<ul></ul>标记然后使用正则表达式从span标记中提取名称来删除它们。

同样,您可以找到第二次出现的<table和第一次出现</table>,然后在其中使用regexp来获取行然后是单元格,最后丢弃跨度内容并留下号。

答案 1 :(得分:0)

非常惊讶没有人提到TIDY。 http://www.w3.org/People/Raggett/tidy/。已经正式拯救了我的屁股几次。我已经设法在将垃圾传递给DOM文档后将其加载到DOM文档中。

然而,在通过整洁之后,我必须做一个重要的模式 - 你的学校的系统会输出一些标签,虽然它们可以在XML文档中完美地工作,但在HTML中却不起作用 - wisssearch。使用正则表达式搜索和替换,最后你有一个有效的DOMDocument!

接下来要做的事情:

  • 摆脱所有这些&amp; xAA;标记 - 正则表达式
  • Parse stuff!

(tidy -f errors.txt -m your_file.txt)