2015-05-29 130 views
1

我使用要求的NodeJS模塊獲得HTML的網站,但不工作了一段重定向網站如下:要求的NodeJS模塊不支持重定向某些URL

var request = require('request'); 

var options = { 
    url: "http://www.amwasia.com", 
    headers: {'user-agent': 'node.js'}, 
    rejectUnauthorized: false, 
    followAllRedirects: true 
}; 

request(options, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log("body>>>>>>"+body) 
    } else { 
     console.log("error>>>>>>>>>" + error); 
     console.log("response statusCode>>>>>>>>>" + response.statusCode); 
     console.log("response body>>>>>>>>>" + response.body); 
    } 
}); 

這給了我這個輸出

體>>>>>>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.amwmotors.com/"> 
</head> 

<body> 
</body> 
</html> 

這是不準確的HTML。

本網站重定向到該頁面http://www.amwmotors.com/

另一個例子我是網站:http://www.pmat.or.th並重定向到http://www.pmat.or.th/main/

這也不能做出正確的輸出。

我自己也嘗試沒有followAllRedirects:在選擇真正

請幫忙?

+0

當我捲曲http://www.amwasia.com我得到與你一樣的輸出。你在期待什麼? – Edgesoft

+0

當我們在瀏覽器中打開http://www.amwasia.com時,我們將被重定向到http://www.amwmotors.com/,所以我想要獲取這個重定向網站的html,並且我們得到的不是正確的,你可以通過使用檢查元素或通過使用CTRL + u –

回答

1

如果您可以登錄您的body VAR:

if (!error && response.statusCode == 200) { 
    console.log("body>>>>>>"+body) 
} 

,那是因爲你收到200狀態代碼,這是不是一個重定向。如果您通過瀏覽器測試的網址www.amwasia.com和被重定向,它通過HTML標籤<meta>做:

<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.amwmotors.com/"> 

通過請求模塊,看來你得到一個200,而不是一個3xx

+0

來檢查這個,所以我怎麼能得到這個案件的請求模塊重定向的URL的HTML。 –

+0

那麼,因爲你所擁有的網址並沒有自動重定向你,但是通過'html'來實現,我唯一看到的就是取消'html',搜索一個''標記並從'content'屬性。 –

+0

好的謝謝,它會有所幫助。 –