情境:
我有一个学校的网站,想获取课程表信息。他们提供了一种工具,用于所有班级,是一种PHP表单,在选择课程后发送帖子信息,如下所示:
https://campus.concordia.ca/psc/pscsprd/EMPLOYEE/HRMS/c/CU_EXT.CU_CLASS_SEARCH.GBL
对于一个小样本,我会选择:
- 学期:2016秋季
- 课程类别:本科生
- 选择主题:CIVI
我对Javascript / jQuery比较陌生,所以不知道有什么可用选项。网站的布局也很难浏览...
我尝试的:
var elems = document.body.getElementsByTagName("span");
for (var i =0 ; i <elems.length;i++){
console.log(elems[i]);
}
我的初步尝试是识别元素结构并隔离文本,但遗憾的是它提供了过多的信息。
然而,我注意到元素模式所遵循的命名约定,所以我将jQuery库复制粘贴到控制台中,并执行了以下操作:
//for the details of the courses
var tempArray = $('[id^="MTG_"]').map(function() { return this.innerText}).get().join();
//for the name of the courses
$('[id^="SSR_CLSRSLT_WRK_GROUPBOX2"]').map(function() {return this.title}).get().join();
问题简述:
课程名称及其所有详细信息并未通过编号关系链接在一起,而是将信息分为大量表格存储在ID下:
$('[id^="ACE_SSR_CLSRSLT_WRK_GROUPBOX2"]')
其中包含课程名称。然后,在大量的td/tr之后,它还有课程的详细信息。
是否有办法使用两次选择器来隔离所需内容?例如,像这样:
//I know this doesn't work but something like this would be nice
$('[id^="ACE_SSR_CLSRSLT_WRK_GROUPBOX2"]'). $('[id^="MTG_"]').map(function() { return this.innerText}).get().join();
还有更好的方法吗?
<span>
中找到,因此将其添加到find()
方法的选择器中是有意义的,否则您将获得重复项。因此,改进后的选择器应为:'span[id^="MTG_"]'
。 - Carsten Massmanna
),那么您可以执行console.log(JSON.stringify(a))
在控制台窗口生成一个JSON字符串,然后将其复制并粘贴到js文件中。 JSON是一种通用格式,也可以在JavaScript之外使用。 - Carsten Massmann