python與nodejs寫爬蟲你更傾向於哪個一個?

mmz_77 發表於 2023-01-06
Python 爬蟲 Node.js
一提到爬蟲,大多數同學都想到的是Python,Python 的優點大家都知道那就是高效率,從零到爬取資料估計半個小時就能動起來。不知道選擇 Node.js人有多少,因為Node.js 更側重於 io 處理,但其 Javascript 語言特性也能帶來高效的開發體驗。兩者都有不錯的非同步效能, Python 3 之後已經原生支援協程, Node.js 更不用說了。
所以這兩個用於爬蟲,如果都熟練掌握,你會更傾向於哪一個?不過大家都對python熟悉的不能再熟悉了,所以今天我們就偏向於Node.js ,並簡單的寫個小爬蟲程式,爬蟲肯定是為了爬取資料資訊,那首先我們就需要確定下我們的目標網站,這裡我們就以獲取微博熱搜資料為需求。但是微博近來風控比較嚴,當然在訪問過程中我們肯定會遇到網站反爬的,那麼這時我們就需要加入代理ip來進行偽裝了。這都是比較簡單的操作,示例過程如下:
Plain Text
複製程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

const http = require("http");
const url = require("url");
// 要訪問的目標頁面
const targetUrl = "
const urlParsed = url.parse(targetUrl);
// 代理伺服器(產品官網 )
const proxyHost = "t.16yun.cn";
const proxyPort = "36600";
// 生成一個隨機 proxy tunnel
var seed = 1;
function random() {
var x = Math.sin(seed++) * 10000;
return x - Math.floor(x);
}
const tunnel = random()*100;
// 代理驗證資訊
const proxyUser = "username";
const proxyPass = "password";
const base64    = new Buffer.from(proxyUser + ":" + proxyPass).toString("base64");
const options = {
host: proxyHost,
port: proxyPort,
path: targetUrl,
method: "GET",
headers: {
"Host": urlParsed.hostname,
"Proxy-Tunnel": tunnel,
"Proxy-Authorization" : "Basic " + base64
}
};
http.request(options, function (res) {
console.log("got response: " + res.statusCode);
res.pipe(process.stdout);
}).on("error", function (err) {
console.log(err);
}).end();
示例主要是以代理IP在程式裡面的實現防過程為重點,每種語言代理IP的使用應該也有細微的差別,對其他語言感興趣的可以私聊或直接搜尋億牛雲獲取更多詳細的程式碼示例。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2931179/,如需轉載,請註明出處,否則將追究法律責任。