在Node.js中,可以使用多種方法實現爬蟲并發請求。這里,我將向您展示如何使用async/await
和Promise.all()
實現并發請求。
首先,確保已經安裝了axios
庫,用于發送HTTP請求。如果尚未安裝,請運行以下命令:
npm install axios
接下來,創建一個名為scraper.js
的文件,并在其中編寫以下代碼:
const axios = require('axios');
// 定義一個異步函數,用于發送請求并處理響應
async function fetch(url) {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
console.error(`Error fetching ${url}:`, error);
return null;
}
}
// 定義一個異步函數,用于并發請求多個URL
async function fetchUrls(urls) {
// 使用Promise.all()并發執行所有fetch請求
const responses = await Promise.all(urls.map(fetch));
return responses;
}
// 示例URL列表
const urls = [
'https://jsonplaceholder.typicode.com/todos/1',
'https://jsonplaceholder.typicode.com/todos/2',
'https://jsonplaceholder.typicode.com/todos/3',
];
// 調用fetchUrls()函數并處理結果
fetchUrls(urls)
.then((responses) => {
console.log('Responses:', responses);
})
.catch((error) => {
console.error('Error fetching one or more URLs:', error);
});
在這個示例中,我們定義了一個名為fetch
的異步函數,它使用axios.get()
發送HTTP請求并返回響應數據。我們還定義了一個名為fetchUrls
的異步函數,它接受一個URL列表并使用Promise.all()
并發執行所有fetch
請求。最后,我們調用fetchUrls()
函數并處理結果。
運行此腳本,您將看到并發請求的結果:
node scraper.js
請注意,這個示例僅用于演示目的。在實際應用中,您可能需要根據需求對代碼進行調整,例如添加錯誤處理、限制并發請求數量等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。