前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何利用 Puppeteer 的 Evaluate 函数操作网页数据

如何利用 Puppeteer 的 Evaluate 函数操作网页数据

原创
作者头像
jackcode
发布于 2024-11-21 03:37:45
发布于 2024-11-21 03:37:45
18300
代码可运行
举报
文章被收录于专栏:爬虫资料爬虫资料
运行总次数:0
代码可运行
爬虫代理
爬虫代理

介绍

在现代的爬虫技术中,Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库,提供了丰富的 API 接口,能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 evaluate 函数,结合代理 IP 技术,演示如何采集目标网站(如界面新闻)上的文章标题和摘要。

界面新闻作为中国具有影响力的原创财经新媒体,其市场特点体现在内容聚合开放生产、发力短视频与直播、综合服务功能提升以及助力社会治理意识加强等方面。界面新闻通过开放平台,掌握用户数据,提升内容生产和传播的精准性,同时,短视频和直播已成为其内容生产力的重要组成部分,增强了新闻报道的即时性。此外,界面新闻客户端在版本迭代过程中,业务边界不断拓展,服务功能愈加凸显,逐渐向“新闻+政务+服务+商务”的综合性平台转型。

从新闻热点的角度来看,界面新闻客户端中信息内容同质化依旧明显,原创优质内容供应不足,但重要时政新闻、突发事件能够获得大多数媒体的关注。因此,使用 Puppeteer 的 evaluate 函数和代理 IP 技术采集界面新闻的文章标题和摘要时,可以更精准地定位到这些热点新闻,为用户提供更加丰富和深入的财经新闻内容。同时,代理 IP 技术的应用可以有效地规避网站的反爬虫机制,提高数据采集的成功率和稳定性。

通过 Puppeteer 的 evaluate 函数,开发者可以在页面的上下文中执行 JavaScript 代码,从而获取页面中的特定数据,如文章标题和摘要。结合代理 IP 技术,可以在不同的地理位置模拟用户访问,减少被目标网站封禁的风险,这对于采集界面新闻这类高质量财经新闻内容尤为重要。通过这种方式,可以为界面新闻的用户提供更加丰富和深入的财经新闻内容,满足他们对高质量信息的需求。

技术分析

Puppeteer 的 Evaluate 函数

evaluate 是 Puppeteer 的核心函数之一。通过该函数,开发者可以在浏览器上下文中执行 JavaScript 代码,直接操作 DOM 树,从而提取网页中的数据。

核心使用步骤包括:

  1. 在浏览器中打开页面。
  2. 使用 page.evaluate 在页面上下文执行自定义脚本,获取需要的数据。
  3. 将数据从浏览器上下文传递到 Node.js 脚本。

代理 IP 的使用

由于频繁的爬虫行为可能会被目标网站检测并封禁 IP 地址,因此引入代理 IP 是非常必要的。我们以爬虫代理服务为例,通过设置代理服务器的域名、端口、用户名和密码,安全稳定地采集网页数据。

实现细节

在代码中,我们将使用以下技术和工具:

  • 设置代理 IP:使用爬虫代理服务。
  • 自定义 Cookie 和 User-Agent:模拟真实用户行为,降低被目标网站封禁的风险。
  • 数据存储:将提取的文章标题和摘要存储到本地文件中。

以下是完整实现代码。


实现代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const puppeteer = require('puppeteer');

// 配置IP代理服务参数 16yun爬虫代理
const PROXY_HOST = "PROXY.16yun.cn"; // 16yun代理服务器
const PROXY_PORT = "12345"; // 端口
const PROXY_USERNAME = "代理用户名"; // 例如:yourUsername
const PROXY_PASSWORD = "代理密码"; // 例如:yourPassword

// 配置目标网站和输出文件
const TARGET_URL = "https://www.jiemian.com";
const OUTPUT_FILE = "articles.json";

(async () => {
    // 启动浏览器并设置代理
    const browser = await puppeteer.launch({
        headless: true, // 无头模式
        args: [
            `--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}` // 配置代理
        ]
    });

    const page = await browser.newPage();

    // 设置代理的认证信息
    await page.authenticate({
        username: PROXY_USERNAME,
        password: PROXY_PASSWORD
    });

    // 设置 User-Agent 和 Cookie
    await page.setUserAgent(
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
    );
    await page.setCookie({
        name: "exampleCookie",
        value: "exampleValue",
        domain: ".jiemian.com"
    });

    try {
        // 打开目标页面
        await page.goto(TARGET_URL, { waitUntil: "networkidle2" });

        // 使用 evaluate 函数提取数据
        const articles = await page.evaluate(() => {
            const data = [];
            const articleElements = document.querySelectorAll(".news-item"); // 根据界面新闻的 DOM 结构选择器
            articleElements.forEach((item) => {
                const title = item.querySelector(".news-item-title")?.innerText?.trim();
                const summary = item.querySelector(".news-item-summary")?.innerText?.trim();
                if (title && summary) {
                    data.push({ title, summary });
                }
            });
            return data;
        });

        // 将数据写入文件
        const fs = require("fs");
        fs.writeFileSync(OUTPUT_FILE, JSON.stringify(articles, null, 2), "utf-8");
        console.log(`数据已成功保存到 ${OUTPUT_FILE}`);
    } catch (error) {
        console.error("爬取过程中发生错误:", error);
    } finally {
        // 关闭浏览器
        await browser.close();
    }
})();

结论

本文详细介绍了如何利用 Puppeteer 的 evaluate 函数操作网页数据,结合代理 IP 和用户模拟技术,实现了从界面新闻上采集文章标题和摘要的功能。通过这种方法,开发者不仅可以高效地处理动态网页,还能有效规避 IP 限制等问题。

如果您需要更稳定的采集体验,建议搭配高质量的代理服务如爬虫代理,确保采集任务的高效完成。未来,随着爬虫技术和反爬策略的不断发展,我们也应积极学习并应用新技术,提升数据采集的能力和效率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
大众点评作为中国领先的本地生活服务平台,不仅是消费者获取商家信息和用户评价的重要工具,同时也是商家推广的关键渠道。通过优质的内容呈现和精准的用户推荐,大众点评能够为商家带来显著的流量提升和品牌曝光,成为商业竞争中不可忽视的资源。
jackcode
2024/11/25
1940
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
在数据驱动的时代,招生数据为学生和教育机构提供了许多宝贵的信息。通过分析和挖掘各大学的招生数据(如录取率、标准化考试分数、班级排名和高中平均绩点),不仅能帮助学生做出合理的选择,还能为教育政策的制定提供依据。本文将介绍如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。
jackcode
2024/11/05
2230
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
Pyppeteer实战:基于Python的无头浏览器控制新选择
在互联网信息爆炸的今天,如何高效获取目标数据成为了一项核心竞争力。本文将带大家走进 Pyppeteer 的世界,通过实战案例对接目标网站 小红书 的热点推荐信息(包括标题、内容和评论),并详细讲解如何利用爬虫代理实现 IP 代理防封、设置 Cookie 与自定义 User-Agent 等操作。整个项目从数据采集、关键信息解构到代码演变可视化,都遵循开源侦探型思路,力图打通从数据获取到数据分析的每一环节。
jackcode
2025/04/09
1800
Pyppeteer实战:基于Python的无头浏览器控制新选择
从网页中提取结构化数据:Puppeteer和Cheerio的高级技巧
网页数据抓取是一种从网页中提取有用信息的技术,它可以用于各种目的,如数据分析、竞争情报、内容聚合等。然而,网页数据抓取并不是一件容易的事情,因为网页的结构和内容可能会随时变化,而且有些网站会采用反爬虫措施,阻止或限制爬虫的访问。因此,我们需要使用一些高级的技巧,来提高爬虫的效率和稳定性。
jackcode
2023/08/28
8980
从网页中提取结构化数据:Puppeteer和Cheerio的高级技巧
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
在现代Web开发中,数据采集已成为一项重要技术,尤其是在财经领域。以“东财股吧”(https://guba.eastmoney.com)为例,该网站汇聚了大量股民的实时讨论和财经信息,为投资决策提供了丰富的参考数据。Puppeteer是一个强大的Node.js库,允许开发者以编程方式控制无头Chrome浏览器,进行高效、复杂的Web Scraping。本文将探讨Puppeteer的高级用法,特别是在财经数据采集中的应用,结合代理IP技术以提高爬虫的可靠性和效率。
jackcode
2024/09/25
3090
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
用Puppeteer点击与数据爬取:实现动态网页交互
在数据采集领域,传统的静态网页爬虫方式难以应对动态加载的网页内容。动态网页通常依赖JavaScript加载数据,用户需要与页面交互才能触发内容显示。因此,我们需要一种更智能的爬虫技术。Puppeteer作为强大的浏览器自动化工具,能模拟用户操作、加载动态数据、实现点击操作和内容采集。此外,为了提高抓取成功率并避免IP封禁,结合代理IP技术必不可少。本文将介绍如何使用Puppeteer和代理IP抓取51job招聘信息,同时从招聘信息的价值、市场应用以及大数据分析角度进行拓展。
jackcode
2024/11/06
2370
用Puppeteer点击与数据爬取:实现动态网页交互
如何使用Puppeteer在Node JS服务器上实现动态网页抓取
动态网页抓取是指通过模拟浏览器行为,获取网页上的动态生成的数据,如JavaScript渲染的内容、Ajax请求的数据等。动态网页抓取的难点在于如何处理网页上的异步事件,如点击、滚动、等待等。Puppeteer是一个基于Node JS的库,它提供了一个高级的API,可以控制Chrome或Chromium浏览器,实现动态网页抓取。本文将介绍如何使用Puppeteer在Node JS服务器上实现动态网页抓取,并给出一个简单的案例。
jackcode
2023/08/24
1.3K0
使用Puppeteer爬取地图上的用户评价和评论
在互联网时代,获取用户的反馈和意见是非常重要的,它可以帮助我们了解用户的需求和喜好,提高我们的产品和服务质量。有时候,我们需要从地图上爬取用户对某些地点或商家的评价和评论,这样我们就可以分析用户对不同地区或行业的态度和偏好。但是,如何从地图上爬取用户评价和评论呢?本文将介绍一种使用Puppeteer的方法,它是一个基于Node.js的库,可以控制Chrome或Chromium浏览器进行各种操作,包括爬虫。
jackcode
2023/09/06
5430
使用Puppeteer爬取地图上的用户评价和评论
使用 rvest 包快速抓取网页数据:从入门到精通
随着大数据和数据科学的迅速发展,互联网数据的抓取已经成为重要的信息获取手段之一。网页抓取(Web Scraping)可以帮助我们自动化地从网页中提取有价值的数据,应用广泛,包括新闻热点分析、金融数据采集等。在本篇文章中,我们将介绍如何使用 R 语言中的 rvest 包,结合代理 IP 技术,快速抓取新闻网站的数据。我们以 澎湃新闻(The Paper,网址:https://www.thepaper.cn)为例,展示如何抓取该网站的新闻热点,包括标题和摘要,并将其保存为文件。
jackcode
2024/12/17
4110
使用 rvest 包快速抓取网页数据:从入门到精通
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
在网络数据爬取中,如何精准、有效地抓取网页中的关键元素是核心问题之一。尤其对于动态网页来说,JavaScript渲染的内容无法通过传统的静态爬虫工具(如 requests、BeautifulSoup 等)获取。因此,使用能够控制浏览器的自动化工具 Puppeteer 就成了一种理想选择。
jackcode
2024/11/19
2210
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
深入探讨 Puppeteer 如何使用 X 和 Y 坐标实现鼠标移动
现代爬虫技术中,模拟人类行为已成为绕过反爬虫系统的关键策略之一。无论是模拟用户点击、滚动,还是鼠标的轨迹移动,都可以为爬虫脚本带来更高的“伪装性”。在众多的自动化工具中,Puppeteer作为一个无头浏览器控制库,以其强大的功能和灵活的 API 赢得了开发者的青睐。
jackcode
2024/11/20
3520
深入探讨 Puppeteer 如何使用 X 和 Y 坐标实现鼠标移动
Puppeteer工具简介及其在网页爬取和自动化中的应用
Puppeteer是一个流行的Node.js库,在开发者中广泛使用的用于网页爬取和自动化任务的工具。它提供两种操作模式,即headfull和headless。在headfull模式下,Puppeteer控制的Chrome或Chromium浏览器是有界面的,也就是可以看到浏览器运行的情况。在此模式下,可以使用浏览器的开发者工具进行调试。这种模式非常适合在本地进行开发和调试。而在headless模式下,它在后台运行,没有用户界面,这种模式非常适合在服务器上运行,因为没有界面,所以可以节省很多资源。该工具还提供缓存资源的选项,这可以帮助减少页面加载时间并提高性能。此外,Puppeteer允许开发人员在页面中执行JavaScript代码,并使用代理更改请求的IP地址,这对于匿名请求或从不同区域访问内容很有用。
jackcode
2023/04/06
7360
Puppeteer工具简介及其在网页爬取和自动化中的应用
如何使用Puppeteer进行新闻网站数据抓取和聚合
Puppeteer是一个基于Node.js的库,它提供了一个高级的API来控制Chrome或Chromium浏览器。通过Puppeteer,我们可以实现各种自动化任务,如网页截图、PDF生成、表单填写、网络监控等。本文将介绍如何使用Puppeteer进行新闻网站数据抓取和聚合,以网易新闻和杭州亚运会为例。
jackcode
2023/08/30
7100
如何使用Puppeteer进行新闻网站数据抓取和聚合
Puppeteer教程:使用CSS选择器点击和爬取动态数据
在现代的网页中,许多数据是通过JavaScript动态加载的,这使得传统的爬虫工具(如requests或BeautifulSoup)无法获取到这些数据。因此,为了更好地处理动态网站的数据爬取,我们需要使用像Puppeteer这样的浏览器自动化工具。
jackcode
2024/11/14
3140
Puppeteer教程:使用CSS选择器点击和爬取动态数据
捕获抖音截图:如何用Puppeteer保存页面状态
随着短视频和直播平台的快速发展,抖音(Douyin)已经成为全球数亿用户的娱乐选择。尤其是在抖音直播中,实时动态和互动元素吸引了大量用户的目光。然而,作为开发者或数据分析师,有时我们需要捕获抖音直播页面的状态,获取实时信息,或进行数据分析。而这时,自动化工具 Puppeteer 就派上了用场。
jackcode
2024/11/11
2860
捕获抖音截图:如何用Puppeteer保存页面状态
利用Puppeteer-Har记录与分析网页抓取中的性能数据
在现代网页抓取中,性能数据的记录与分析是优化抓取效率和质量的重要环节。本文将介绍如何利用Puppeteer-Har工具记录与分析网页抓取中的性能数据,并通过实例展示如何实现这一过程。
jackcode
2024/09/26
1860
利用Puppeteer-Har记录与分析网页抓取中的性能数据
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
随着互联网的发展,网页数据抓取(Web Scraping)已成为数据分析和市场调研的重要手段之一。Puppeteer作为一款强大的无头浏览器自动化工具,能够在Node.js环境中模拟用户行为,从而高效地抓取网页数据。然而,当面对复杂的网页结构和反爬虫机制时,基础的爬虫技术往往无法满足需求。本文将深入探讨如何在Node.js中利用Puppeteer的高级功能,实现复杂的Web Scraping任务,并通过代理IP、User-Agent、Cookies等技术提高爬虫的成功率。
jackcode
2024/09/02
4970
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
如何在Puppeteer中实现表单自动填写与提交:问卷调查
在现代市场研究中,问卷调查是一种重要的工具。企业通过在线问卷调查了解消费者对产品或服务的需求、偏好和满意度,从而为产品开发、市场营销和服务优化提供指导。然而,对于爬虫技术专家来说,批量自动化地填写和提交问卷调查可以帮助企业分析不同用户群体的行为模式、优化用户体验,以及进行大规模的市场分析。
jackcode
2024/11/12
4220
如何在Puppeteer中实现表单自动填写与提交:问卷调查
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
在当今信息爆炸的时代,自动化数据抓取技术(也称为“网络爬虫”)对于数据分析与信息挖掘具有重要的作用。本文将介绍如何利用Node.js实现自动化数据抓取,并通过控制鼠标点击与位置坐标的方式,采集页面上指定的新闻数据。我们将使用代理IP、设置User-Agent与Cookie等手段,以提高爬虫的效率与隐蔽性。特别适用于需要规避IP封锁、突破频率限制的新闻热点数据抓取。
jackcode
2024/11/07
3640
实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
Pyppeteer Python加载扩展及示例
Pyppeteer 是一个 Python 库,可以控制无头 Chrome 或 Chromium 浏览器,并在网页加载过程中加载扩展来增强浏览器功能。Pyppeteer 提供了一个 API,让您可以与无头浏览器交互,完成网页抓取、自动化测试、网页截图或 PDF 生成等任务。加载扩展的功能可以让您在浏览器导航到网页时,运行自定义的 JavaScript 代码,从而改变浏览器的行为。您可以在页面加载之前对页面进行操作,例如修改 DOM(文档对象模型)、拦截网络请求、注入其他脚本等。一些常见的加载扩展的用例有:
jackcode
2023/06/13
5220
Pyppeteer Python加载扩展及示例
推荐阅读
相关推荐
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验