簡體   English   中英

解析此網站的正確方法是什么?

[英]What is the proper way to approach parsing this website?

場景:

我有一個學校的網站,我正在嘗試獲取可用的時間表信息。 他們有一個可用於所有類的工具,這是一種PHP形式,在選擇您的課程后發送帖子信息:

https://campus.concordia.ca/psc/pscsprd/EMPLOYEE/HRMS/c/CU_EXT.CU_CLASS_SEARCH.GBL

對於一個小樣本,我會選擇:

  1. 期限: 2016年秋季
  2. 課程職業:本科
  3. 選擇主題: 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();

TL; DR問題:

課程名稱和所有細節不是通過數字順序關系鏈接在一起的。 相反,信息被划分為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();

或者,還有更好的方法?

你可以像這樣使用jquery find()方法:

$('[id^="ACE_SSR_CLSRSLT_WRK_GROUPBOX2"]').find('[id^="MTG_"]').map(function() {
    return this.innerText
}).get().join();

這將找到'MTG_'元素,它們是'ACE_SSR_CLSRSLT_WRK_GROUPBOX2'的子元素(直接子節點和進一步向下節拍)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM