ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Nodejs实现爬虫的几种方式

2022-03-28 23:31:22  阅读:229  来源: 互联网

标签:axios const log Nodejs http 123.123 几种 console 爬虫


获取代理 IP

// 需要安装 axios 模块 - npm install axios --save
const axios = require('axios')

// id secret 等参数是在猿人云官网提取API内获取的
const queries = {
    id: 'xxx',
    secret: 'xxx',
    limit: 1,
    format: 'txt',
    auth_mode: 'auto'
};

axios.get('http://tunnel-api.apeyun.com/q', {
    params: queries,
}).then((response) => {
    console.log('IP:', response.data);
}).catch((e) => {
    console.error('Error:', e);
});

爬虫程序

  • axios


     

    // 需要安装 axios 模块 - npm install axios --save
    const axios = require('axios')
    
    // 要访问的目标页面
    let targetUrl = "http://www.baidu.com"
    
    // 代理服务器,假设提取到的代理 ip 是 123.123.123.123:1234
    const proxyHost = "123.123.123.123"
    const proxyPort = 1234
    
    // 代理验证信息(猿人云官网获取)
    const proxyUser = "xxx"
    const proxyPass = "xxx"
    
    let proxy = {
        host: proxyHost,
        port: proxyPort,
        auth: {
            username: proxyUser,
            password: proxyPass
        }
    }
    
    // 参见官方文档 https://github.com/axios/axios#request-config
    axios.get(targetUrl,{proxy:proxy})
        .then(function (response) {
            // handle success
            console.log(response.data)
        })
        .catch(function (error) {
            // handle error
            console.log(error)
        })
        .finally(function () {
            // always executed
        });
    

      

  • http

  •  

  • const http = require("http")
    const url  = require("url")
    
    // 要访问的目标页面
    const targetUrl = "http://www.baidu.com"
    const urlParsed   = url.parse(targetUrl)
    
    // 代理服务器,假设提取到的代理ip是123.123.123.123:1234
    const proxyHost = "123.123.123.123"
    const proxyPort = "1234"
    
    // 代理隧道验证信息(猿人云官网获取)
    const proxyUser = "xxx"
    const proxyPass = "xxx"
    
    const base64 = Buffer.from(proxyUser + ":" + proxyPass).toString("base64")
    
    const options = {
        host: proxyHost,
        port: proxyPort,
        path: targetUrl,
        method: "GET",
        headers: {
            "Host": urlParsed.hostname,
            "Proxy-Authorization": "Basic " + base64
        }
    }
    
    http.request(options, function(res) {
        console.log("got response: " + res.statusCode)
    })
    .on("error", function(err) {
        console.log(err)
    })
    .end()
    

      

  • request


     

  • // 需要安装 request 模块 - npm install request --save
    const request = require("request")
    
    // 要访问的目标页面
    const targetUrl = "http://www.baidu.com"
    
    // 代理服务器,假设提取到的代理ip是123.123.123.123:1234
    const proxyHost = "123.123.123.123"
    const proxyPort = 1234
    
    // 代理隧道验证信息(猿人云官网获取)
    const proxyUser = "xxx"
    const proxyPass = "xxx"
    
    const proxyUrl = "http://" + proxyUser + ":" + proxyPass + "@" + proxyHost + ":" + proxyPort
    
    const proxiedRequest = request.defaults({'proxy': proxyUrl})
    
    const options = {
        url: targetUrl,
        headers: {}
    }
    
    proxiedRequest.get(options, function (err, res, body) {
        console.log("got response: " + res.statusCode)
        console.log("got response: " + body)
    })
    .on("error", function (err) {
        console.log(err);
    })
    

      

  • superagent


     

     

  • // 需要安装 superagent 和 superagent-proxy 模块 - npm install superagent superagent-proxy --save
    const request = require("superagent")
    require("superagent-proxy")(request)
    
    // 要访问的目标页面
    const targetUrl = "http://www.baidu.com"
    
    // 代理服务器,假设提取到的代理ip是123.123.123.123:1234
    const proxyHost = "123.123.123.123";
    const proxyPort = 1234;
    
    // 代理隧道验证信息(猿人云官网获取)
    const proxyUser = "xxx"
    const proxyPass = "xxx"
    
    const proxyUrl = "http://" + proxyUser + ":" + proxyPass + "@" + proxyHost + ":" + proxyPort
    
    request.get(targetUrl).proxy(proxyUrl).end(function onResponse(err, res) {
        if (err) {
            return console.log(err)
        }
        console.log(res.status, res.headers)
        console.log(res.text)
    });

使用 node 运行这个文件,当你的控制台打印出一大段 HTML 代码说明这个爬虫程序成功了

 

转自:https://mp.weixin.qq.com/s/JA11NzbbHtKqgijmdmJPlw

 

标签:axios,const,log,Nodejs,http,123.123,几种,console,爬虫
来源: https://www.cnblogs.com/tjp40922/p/16069741.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有