PHP / Javascript - 从我的大学网站解析HTML

时间:2010-12-04 09:29:01

标签: php javascript parsing

我正在尝试解析此页面中的课程:http://college.usc.edu/cf/course-guide/genelects.cfm。具体来说,是II类课程。

我对javascript不太熟悉,但似乎点击了cat II链接时,会调用此方法:

function GetClassList(catid,sem,semester)
{
  jQuery('#FallClasses_'+catid).hide();
  jQuery('#SpringClasses_'+catid).toggle();
  jQuery('#SpringClasses_'+catid).load('genelects-ajax-getclasslist.cfm', {catid:catid,sem:sem});
}

问题是我没有看到html中的任何地方的课程。似乎都是在服务器端完成的。


EDIT!

所以我在DOM中找到了放置数据的位置。我用过萤火虫。

我查看了与此div相关的DOM:

<div id="SpringClasses_2" style="display: none; "/>

然后在Firebug DOM选项卡中,我:

1) Clicked +children.
2) Found the html I need under +innerHTML.

我现在明白如何查找数据。但我需要编写一个脚本(在另一个域上运行)来解析该DOM。 我该怎么做?如何从大学页面获取该DOM,然后解析它?

2 个答案:

答案 0 :(得分:0)

您的代码可能如下所示:

function GetClassList(catid,sem,semester)
{
  $('#FallClasses_'+catid).hide();
  $('#SpringClasses_'+catid).toggle();

    $.ajax({
                type: 'POST',
                url: 'genelects-ajax-getclasslist.cfm',
                data: 'catid='+encodeURIComponent(catid)+'&sem='+encodeURIComponent(sem),
                success: function(data){
                jQuery('#SpringClasses_'+catid).html(data);
                }
        });
}

请注意,genelects-ajax-getclasslist.cfm脚本只返回您要放入#SpringClasses_'+catid容器的html数据。 脚本genelects-ajax-getclasslist.cfm应该与此javascript源位于同一个Internet域中,当然,换句话说,应该是本地的,而不是远程的。

答案 1 :(得分:0)

我可能会采取不同的行动......
(即使用regexp解析的小型php或perl命令行客户端)

但是考虑到你得到的东西,你可以在你的页面中添加一个隐藏的形式,并使用<input>元素来存储你用javascript获得的数据。然后,submit()它到您控制的服务器。即便是当地的。甚至在localhost上。

AFAIK,不应该以这种方式触发隐藏的安全机制。

IIRC类似

var input=$('<input name="data" value=""/>')
var form=$('<form style="display:none"
                  action="http://myserver.example.com/post-junk-here.php"
                  method="post">
            <input type="submit">
            </form>')

$('html').append(form.append(input))
input.value=my_hard_earned_data
form.submit()

应该这样做。