Node.js Puppeteer爬虫:如何将数组生成JSON文件或传给PHP?
可行解决方案
你遇到的报错是因为XMLHttpRequest和File都是浏览器专属API,Node.js环境里没有这些对象,得用Node.js原生模块或第三方包实现需求,下面是两种可行方案:
方案一:生成JSON文件供PHP读取
用Node.js内置的fs模块将爬取到的数组转成JSON字符串写入文件,PHP再读取该文件即可。
Node.js代码示例:
const fs = require('fs'); // 假设provincias是你爬取到的目标数组 const provincias = [/* 你的爬取数据 */]; // 将数组转为格式化的JSON字符串并写入文件 fs.writeFileSync('./scrap_result.json', JSON.stringify(provincias, null, 2)); console.log('JSON文件生成完成');
PHP读取文件代码:
// 读取JSON文件内容 $jsonContent = file_get_contents('./scrap_result.json'); // 转换为PHP数组 $data = json_decode($jsonContent, true); // 输出或处理数据 print_r($data);
注意:确保生成的JSON文件和PHP文件在同一目录,或指定正确的文件路径。
方案二:直接POST数据到PHP接口
用Node.js的HTTP客户端工具把数据发送到PHP接口,推荐用axios(需先安装)或Node原生http模块。
方法1:使用axios(代码更简洁)
- 先安装axios:
npm install axios
- Node.js代码示例:
const axios = require('axios'); const provincias = [/* 你的爬取数据 */]; // 发送POST请求到PHP接口 axios.post('http://localhost/your-php-file.php', provincias, { headers: { 'Content-Type': 'application/json' } }) .then(response => { console.log('PHP返回响应:', response.data); }) .catch(error => { console.error('请求失败:', error.message); });
方法2:使用Node原生http模块(无需额外安装包)
const http = require('http'); const provincias = [/* 你的爬取数据 */]; const postData = JSON.stringify(provincias); const options = { hostname: 'localhost', port: 80, path: '/your-php-file.php', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } }; const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log('PHP返回响应:', data); }); }); req.on('error', (e) => { console.error('请求失败:', e.message); }); // 发送请求数据 req.write(postData); req.end();
PHP接收数据代码:
// 读取POST的JSON数据 $jsonData = file_get_contents('php://input'); // 转换为PHP数组 $data = json_decode($jsonData, true); // 处理数据并返回确认信息 echo json_encode(['status' => 'success', 'received_data' => $data]);
内容的提问来源于stack exchange,提问作者Jose Garcia
相关产品推荐
相关产品推荐

