实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
创作时间:
作者:
@小白创作中心
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
引用
CSDN
1.
https://blog.csdn.net/ip16yun/article/details/143587976
在当今信息爆炸的时代,自动化数据抓取技术(也称为“网络爬虫”)对于数据分析与信息挖掘具有重要的作用。本文将介绍如何利用Node.js实现自动化数据抓取,并通过控制鼠标点击与位置坐标的方式,采集页面上指定的新闻数据。我们将使用代理IP、设置User-Agent与Cookie等手段,以提高爬虫的效率与隐蔽性。特别适用于需要规避IP封锁、突破频率限制的新闻热点数据抓取。
一、概述
Node.js作为一种高效的JavaScript运行时环境,提供了丰富的包与API,适合处理爬虫任务。我们将结合Puppeteer与代理IP技术实现一个简单的自动化数据抓取工具。目标网站为“澎湃新闻”(https://www.thepaper.cn),我们将自动打开网页,模拟鼠标点击以采集页面信息,并将新闻内容按分类进行整理。
涉及的技术要点
- Puppeteer:控制浏览器行为,模拟鼠标点击、键盘输入等操作。
- 代理IP:通过代理IP减少被网站封锁的风险。
- User-Agent与Cookie:通过设置请求头,模仿正常用户行为,提高抓取的效率与隐蔽性。
二、实现细节
1. 安装依赖
首先,确保系统已安装Node.js,然后通过npm安装相关包:
npm install puppeteer axios
2. 代码实现
以下代码实现了从澎湃新闻首页抓取新闻热点并归类整理的流程。代码中加入了代理IP、User-Agent和Cookie的配置。
const puppeteer = require('puppeteer');
// 代理IP配置
const proxyHost = '代理服务器域名'; // 请替换为实际的代理服务器域名
const proxyPort = '代理服务器端口'; // 请替换为实际的代理端口
const proxyUsername = '代理用户名'; // 请替换为实际的用户名
const proxyPassword = '代理密码'; // 请替换为实际的密码
// User-Agent和Cookie配置
const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36';
const cookies = [
{
name: 'cookie_name', // 根据需要替换
value: 'cookie_value',
domain: '.thepaper.cn'
}
];
// 目标网站
const targetUrl = 'https://www.thepaper.cn';
(async () => {
// 启动浏览器并设置代理
const browser = await puppeteer.launch({
headless: false, // 显示浏览器窗口便于调试
args: [
`--proxy-server=http://${proxyHost}:${proxyPort}`
]
});
const page = await browser.newPage();
// 设置User-Agent
await page.setUserAgent(userAgent);
// 设置Cookie
await page.setCookie(...cookies);
// 输入代理认证信息
await page.authenticate({ username: proxyUsername, password: proxyPassword });
// 访问目标页面
await page.goto(targetUrl, { waitUntil: 'networkidle2' });
// 等待页面加载完成
await page.waitForSelector('.news_content'); // 假设新闻内容在此CSS选择器中
// 模拟鼠标点击某个分类标签(例如“热点”)
const categorySelector = '.some-category-selector'; // 替换为实际的分类按钮选择器
if (await page.$(categorySelector) !== null) {
await page.click(categorySelector);
console.log('点击了新闻分类标签');
await page.waitForTimeout(2000); // 等待页面加载新内容
}
// 选择并点击一个新闻标题,模拟进入新闻详情页面
const newsTitleSelector = '.news_content .news_title'; // 假设新闻标题在此选择器中
const newsTitle = await page.$(newsTitleSelector);
if (newsTitle !== null) {
const boundingBox = await newsTitle.boundingBox(); // 获取元素的位置信息
await page.mouse.move(boundingBox.x + boundingBox.width / 2, boundingBox.y + boundingBox.height / 2); // 移动鼠标到新闻标题
await page.mouse.click(boundingBox.x + boundingBox.width / 2, boundingBox.y + boundingBox.height / 2); // 模拟点击
console.log('点击了新闻标题,进入新闻详情页面');
await page.waitForTimeout(2000); // 等待详情页面加载
}
// 抓取新闻详情页面中的内容
const newsData = await page.evaluate(() => {
const titleElement = document.querySelector('.news_content .news_title'); // 替换为详情页面中的标题选择器
const contentElement = document.querySelector('.news_content .news_body'); // 替换为详情页面中的正文选择器
return {
title: titleElement ? titleElement.innerText : '',
content: contentElement ? contentElement.innerText : ''
};
});
console.log('抓取的新闻详情数据:', newsData);
// 关闭浏览器
await browser.close();
})();
3. 代码解析
- 代理IP配置:使用代理IP服务(域名、端口、用户名、密码),通过
page.authenticate()方法设置认证信息,保证访问来自代理IP。 - 鼠标点击操作:使用
page.click()或者通过page.mouse.move()和page.mouse.click()精确模拟鼠标移动并点击。 - 控制鼠标移动位置:通过获取元素的边界信息 (
boundingBox) 精确定位鼠标点击位置,模仿真实用户的点击行为。 - 等待页面响应:在点击后使用
waitForTimeout短暂等待,确保页面内容加载完成,以便下一步抓取。
三、效果与应用
通过此方案,我们可以在澎湃新闻等新闻门户网站上自动化获取热点新闻数据,并进行归类整理,为后续的数据分析和热点追踪奠定基础。对于新闻热点的时效性需求,这种基于代理IP与用户模拟的爬虫方案能够有效提升数据抓取的稳定性与准确性。
在实际应用中,可以进一步将抓取的数据存储至数据库中,以便后续的数据分析与展示。此外,设置抓取频率与周期性更新机制,也可以对新闻热点的变化趋势进行长时间监控。
四、总结
本文通过Node.js、Puppeteer及代理IP等技术实现了自动化新闻数据抓取的流程。该方案适用于高频率、连续性的数据抓取任务。
热门推荐
《聪明却坐不住的孩子》:多动症儿童家庭的实用指南
多动症儿童的心理健康不容忽视
四朝纹样亮相春晚,《年锦》展现中华文化传承创新
龙生九子:中国古代文化中的九种独特神兽及其寓意
2025春节文旅攻略:三座古都上演文化盛宴
相差10岁,秦昊伊能静:用包容谱写幸福婚姻
澜沧江-湄公河流域水生生物保护:现状、影响与对策
为什么中国拥有长江流域,却没有完全拥有澜沧江流域?
广西罗城仫佬族自治县举办传统婚俗展演,重现“送嫁十姊妹”盛况
河南九家一级博物馆:镇馆之宝见证中原文明
温州朔门古港遗址揭秘东海大黄鱼历史
德国二十世纪的紧张与变革:从世界大战到全球化
战争引发心理压力,四种方案助你缓解不安
数独不只是游戏:它如何培养孩子的逻辑思维
秦始皇的长城:千年工程的震撼揭秘
秦始皇的中央集权:开创性改革还是暴政?
甘肃是我国地形地貌最全的省,堪称地理界百科全书亚洲最佳旅游地
细数甘肃省博物馆镇馆之宝
牛奶当水喝 有可能会造成营养过剩
蒲公英泡水,中医专家教你正确喝
蒲公英茶:冬季养生新宠?
全球建筑行业加速绿色转型,中国新建绿建占比超九成
破解高密度城市绿色建筑难题:三大挑战与应对之道
MIT报告:绿色建筑转型面临四大挑战,多管齐下推动可持续发展
母亲节送花攻略:不同颜色玫瑰花寓意全解析
古巴比伦新年节:神秘献祭仪式背后的宗教与政治密码
清明祭祖:从传统到创新的文化传承
献祭:从物质到精神的文明之旅
《圣经》中的献祭仪式:从外在形式到内在精神的转变
文玩手串保养指南:8个实用技巧让珠串更耐用