使用puppeteer/nodejs发送post请求

  在一些实际场景应用中,我们需要在js代码中发送请求,来获取返回的结果来进行下一步代码的编写,下面是使用js发送post请求的部分代码,仅供参考。

const https = require('https');
const zlib = require('zlib');
const qs = require('querystring');
const HttpsProxyAgent = require('https-proxy-agent');
const http = require('http');
const HttpsProxyAgent = require('http-proxy-agent');    
   
//上面是需要导入的包,下面是post请求的代码
	
	var data = {
	    pageNum: 3,
	    UnitId: 0
	};//这是需要提交的数据

	var content = await qs.stringify(data);
	let hostPort = bizArgs.proxy.proxyAddress;
	let proxyAuth = bizArgs.proxy.proxyAuth;
	hostPort = hostPort.replace(",", ":");
	proxyAuth = proxyAuth.replace(",", ":");
	// var proxy = 'http://user:pass@xxx.com:port';
	var proxy = "http://" + proxyAuth + "@" + hostPort;
	if (proxyAuth === "") {
	    proxy = "http://" + hostPort;
	}
	var agent = new HttpProxyAgent(proxy);
	var options = {
	    hostname: 'zfxxgk.ndrc.gov.cn',
	    agent: agent,
	    path: '/web/dirlist.jsp?dirid=0&pid=0',
	    method: 'POST',
	    headers: {
	        "Accept": "*/*",
	        "Accept-Encoding": "gzip, deflate",
	        "Accept-Language": "zh-CN,zh;q=0.9",
	        "Connection": "keep-alive",
	        "Content-Type": "application/x-www-form-urlencoded",
	        "Origin": "http://zfxxgk.ndrc.gov.cn",
	        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
	        // "Cookie": cookie,
	        "Host": "zfxxgk.ndrc.gov.cn",
	        "Upgrade-Insecure-Requests": "1"
	    }
	};
	
	var req = await http.request(options, function (res) {
	    console.log('STATUS: ' + res.statusCode);
	    console.log('HEADERS: ' + JSON.stringify(res.headers));
	    // res.setEncoding('utf-8');
	    //返回数据流
	    postData.body = "";
	    var output = "";
	    //返回类型gzip需要解压,否则乱码
	    if (res.headers['content-encoding'] === 'gzip') {
	        var gzip = zlib.createGunzip();
	        res.pipe(gzip);
	        output = gzip;
	    } else {
	        output = res;
	    }
	    //数据
	    output.on('data', function (chunk) {
	        chunk = chunk.toString('utf-8');
	        postData.body += chunk;
	        console.log('BODY: ' + chunk);
	    });
	    // 结束回调
	    output.on('end', function () {
	        console.log("REBOAK:", postData.body);
	    });
	
	});
	await req.on('error', function (e) {
	    console.log('problem with request: ' + e.message);
	});
	await req.write(content);
	await req.end();
	
	await page.waitFor(3000);
	//返回的结果保存在postData.body中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nodejs使用puppeteer是通过调用puppeteer库来实现的。Puppeteer是一个基于Chrome浏览器内核的nodejs爬虫包,它可以模拟用户操作界面,包括页面滚动、按钮点击、导航跳转等功能。你可以通过以下步骤来实现nodejs使用puppeteer: 1. 首先,安装puppeteer库。你可以通过全局安装或者当前项目安装的方式进行安装。全局安装的命令是:npm -g install puppeteer;当前项目安装的命令是:npm -S install puppeteer。 2. 创建一个async函数,例如puppeteerTest,在函数内部进行puppeteer操作。 3. 在puppeteerTest函数中,你可以设置一些选项,例如设置用户代理(user agent),可以通过args参数来传递。例如,你可以设置options对象,其中headless属性用于控制是否以无头模式运行,args属性用于设置命令行参数,包括设置用户代理。 4. 使用require语句引入puppeteer库,并通过puppeteer.launch(options)方法来启动一个浏览器实例。 5. 调用browser.newPage()方法创建一个新的页面实例。 6. 可以使用page.setViewport()方法设置页面的视口大小。 7. 使用page.goto(url)方法跳转到指定的URL地址。 下面是一个示例代码: ```javascript const puppeteerTest = async () => { const user_agent = "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36"; const options = { headless: false, // 是否以无头模式运行 args: ['--no-sandbox', user_agent] // 设置命令行参数,包括设置用户代理 }; const puppeteer = require('puppeteer'); const browser = await puppeteer.launch(options); const page = await browser.newPage(); await page.setViewport({ width: 1020, height: 900 }); // 设置页面视口大小 await page.goto("https://www.baidu.com"); // 跳转到指定的URL地址 }; puppeteerTest(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值