最佳實踐:在抓取網頁之前,您應該始終檢查robots.txt文件。我無法爲這個特定的網站找到一個,但是如果你遇到了一個不允許抓取的網站,你應該遵循所有規則。
這就是說,看起來好像您的刮刀卡在無限重定向循環中,因爲出紙請求上缺少標頭。
像下面這樣的東西會給你一個迴應,但你需要確定需要做什麼解析來從中提取信息。
var request = require('request');
var options = {
url: 'https://webapp4.asu.edu/catalog/classlist?k=81684&t=2177&e=all&hon=F&promod=F',
headers: {
"method":"GET",
"path":"/catalog/classlist?k=math&t=2177&e=all&hon=F&promod=F",
"scheme":"https",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"accept-encoding":"gzip, deflate, sdch, br",
"accept-language":"en-US,en;q=0.8",
"cache-control":"no-cache",
"cookie":"JSESSIONID=javaprod19~413DF4150236B1466C8ECB85EB796C06.catalog19; onlineCampusSelection=C; __cfduid=d5e9cb96f2485f7500fec2116ee8f23381491087061; __utma=59190898.1874896314.1491088625.1491088625.1491088625.1; __utmb=59190898.2.10.1491088625; __utmc=59190898; __utmz=59190898.1491088625.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=137925942.2000995260.1491087063.1491087063.1491088718.2; __utmb=137925942.2.10.1491088718; __utmc=137925942; __utmz=137925942.1491088718.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); ADRUM=s=1491089349546&r=https%3A%2F%2Fwebapp4.asu.edu%2Fcatalog%2Fclasslist%3F-1275642430",
"pragma":"no-cache",
"referer":"https://webapp4.asu.edu/catalog/",
"upgrade-insecure-requests":"1",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
}
};
function callback(error, response, body) {
console.log(response.body)
}
request(options, callback);
爲什麼你在URL中找到的propertiesObject中傳遞相同的查詢參數?大多數時候你會有一個像「https://webapp4.asu.edu/catalog/classlist」這樣的URL,然後你會傳遞一個類似於{k:'81684',t:'2177'的查詢對象, e:「all」,hon:「F」,promod:「F」}。 – user2263572
對不起,這是一個錯字。我的要求中沒有。 –
你有沒有嘗試刪除「.defaults({maxRedirects:3});」這是否會改變結果?我相信請求默認值爲10,並且根據您嘗試查看的頁面3可能太低。 – user2263572