我正在尝试解析此页面中的课程: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,然后解析它?
答案 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()
应该这样做。