2013-07-26 73 views
0

我有什麼會被描述爲一個jQuery「腳本」:從手動jQuery代碼創建蜘蛛最簡單的方法?

// Get the Textbooks URL 
window.location = $($("li.dropDown").find("a")[0]).attr('href'); 

// Fill in Department Data 
var depts = $($(".deptSelectInput")[0]).next().children(); 
$($(".deptSelectInput")[0]).val($($(".deptSelectInput")[0]).next().children().text()); 
$($(".deptSelectInput")[0]).blur(); 

// Fill in Course Data 
var courses = $($(".courseSelectInput")[0]).next().children(); 
$($(".courseSelectInput")[0]).val($($(".courseSelectInput")[0]).next().children().text()); 
$($(".courseSelectInput")[0]).blur(); 

// Fill in Section Data 
var sections = $($(".sectionSelectInput")[0]).next().children(); 
$($(".sectionSelectInput")[0]).val($($(".sectionSelectInput")[0]).next().children().text()) 
$($(".sectionSelectInput")[0]).blur(); 


// Submit the form, only if it's valid 
if (($(".noTextBookCourseErrorMessage")[0].style.display) == "none") { 
    formSubmission(); 
} 


// Extract all the ISBNs from the page 
var regex = /\d+/g; 
var isbn = $('li:contains("ISBN")').text().trim(); 
var isbns = []; 

var tempIsbn = regex.exec(isbn); 
while (tempIsbn) { 
    isbns.push(parseInt(tempIsbn[0], 10)); 
    tempIsbn = regex.exec(isbn); 
} 

console.log(isbns); 

這不正是我需要做的。

當我在Chrome中打開開發工具並分三次單獨發佈這個腳本(一次加載一個新URL,一次獲取數據並提交表單,一次從新頁面讀取),它會完全返回給我我想要的數據。

我對蜘蛛很陌生,想知道最好的辦法是自動化這個過程。基本上,我需要一個腳本,我可以運行,將做我剛剛做的(分解三個jQuery帖子)。

我已經看着CasperJS和機械化,但從來沒有使用過。

有什麼建議嗎?

回答

1

對於您的情況,您嘗試抓取的Web上下文包含通過JQuery的動態內容,如果您想使用Javascript來實現這一目標,CasperJS是一個很好的選擇。您可以使用它來觸發事件,添加處理步驟,包括在每個ajax調用之後等待和驗證的函數,以便處理任何下一步。

這裏的示例如何抓取與CasperJS一個網站和JQuery
CasperJs and Jquery with chained Selects

對於執行從CasperJS JavaScript代碼中,必須使用evaluate()方法

的評估()方法之間的柵極CasperJS環境和您打開的頁面之一;每次你通過一個閉包來評估(),你就進入頁面並執行代碼,就好像你在使用瀏覽器控制檯一樣。