WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率

亿牛云<a class=爬虫代理" />

介绍

随着互联网数据的爆炸式增长,爬虫技术成为了获取信息的重要工具。在实际应用中,如何提升浏览器自动化的效率是开发者常常面临的挑战。Chrome DevTools Protocol(CDP)与Selenium WebDriver相结合,为浏览器自动化提供了强大的控制能力,并允许用户直接与浏览器的底层交互。本文将通过使用CDP优化Selenium的效率,结合代理IP技术,实现对微博数据的高效采集,并通过设置cookie和user-agent模拟真实用户行为。

技术分析
1. Chrome DevTools Protocol 简介

Chrome DevTools Protocol 是一个可以让开发者与浏览器直接通信的工具。通过CDP,开发者可以访问和操作浏览器的低层功能,例如网络拦截、性能分析、JavaScript调试等。相比传统的WebDriver方式,CDP提供了更细粒度的控制,能够进一步提升浏览器自动化任务的效率。

2. Selenium与CDP结合

Selenium是最常用的浏览器自动化工具之一,通过集成CDP,我们可以更灵活地控制浏览器。例如,能够在网络层面上拦截请求并设置代理,或动态修改请求头(如设置cookie和user-agent)。这种能力使得爬虫程能提高数据获取效率。

3. 代理IP的使用

在实际爬虫过程中,使用代理IP可以避免IP被封禁,提高爬虫的稳定性。本文采用亿牛云爬虫代理作为示例,通过代理实现IP轮换功能,确保微博数据的采集高效且稳定。

4. 代码示例:微博数据采集

以下是结合CDP和代理IP的Selenium爬虫代码,展示如何实现cookie和user-agent的设置:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time# 配置代理IP 亿牛云爬虫代理 www.16yun.cn
PROXY_HOST = "代理服务器域名"  # 替换为亿牛云爬虫代理提供的域名
PROXY_PORT = "代理服务器端口"  # 替换为亿牛云爬虫代理提供的端口
PROXY_USER = "代理用户名"     # 替换为亿牛云爬虫代理提供的用户名
PROXY_PASS = "代理密码"       # 替换为亿牛云爬虫代理提供的密码# Chrome DevTools Protocol 选项配置
chrome_options = Options()
chrome_options.add_argument("--disable-blink-features=AutomationControlled")  # 绕过检测
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument(f"--proxy-server=http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}")# 设置User-Agent
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36")# 启动浏览器
driver_service = Service(executable_path='chromedriver')  # 指定chromedriver路径
driver = webdriver.Chrome(service=driver_service, options=chrome_options)# 访问微博热搜页面
driver.get("https://s.weibo.com/top/summary")# 等待页面加载完成
time.sleep(5)# 获取热搜榜单元素
hot_search_list = driver.find_elements(By.CSS_SELECTOR, ".td-02 a")# 创建热搜信息列表,用于归类整理
hot_search_data = []# 遍历热搜信息
for index, item in enumerate(hot_search_list):# 获取热搜标题和链接title = item.textlink = item.get_attribute("href")# 将热搜信息整理为字典形式hot_search_data.append({"排名": index + 1,"标题": title,"链接": link})# 打印归类整理后的热搜信息
for entry in hot_search_data:print(f"排名: {entry['排名']}, 标题: {entry['标题']}, 链接: {entry['链接']}")# 关闭浏览器
driver.quit()
代码说明:
  1. 微博热搜页面访问:通过driver.get("https://s.weibo.com/top/summary"),直接访问微博热搜页面。
  2. 等待页面加载:使用time.sleep(5),确保页面加载完毕后再进行爬取。可以根据网络状况调整等待时间。
  3. 热搜数据提取:通过find_elements(By.CSS_SELECTOR, ".td-02 a"),获取热搜榜单中的所有链接和标题信息。
  4. 数据归类整理:将热搜的排名、标题和链接信息以字典形式存储在hot_search_data列表中,便于后续使用和分析。

代码执行后,会按照微博热搜的排名依次输出热搜标题及其对应的链接,数据将会被整理归类,方便进一步使用或存储。

结论

在浏览器自动化任务中,Chrome DevTools Protocol与Selenium WebDriver的结合为开发者提供了强大的控制能力。通过使用CDP,开发者可以高效采集数据,提升爬虫的成功率。配合代理IP技术和cookie、user-agent的设置,爬虫程序可以更稳定、真实地模拟用户行为,从而获取更多有价值的数据。


http://www.ppmy.cn/ops/106493.html

相关文章

如何用pytorch进行图像分类

如何用pytorch进行图像分类 使用PyTorch进行图像分类是深度学习中的一个常见任务&#xff0c;涉及一系列步骤&#xff0c;从数据预处理到模型训练和评估。下面将详细描述每个步骤&#xff0c;从零开始构建一个图像分类器。 1. 安装必要的库 在开始之前&#xff0c;首先需要确…

基于 OpenCV 的数字图像处理实验平台设计

基于 OpenCV 的数字图像处理实验平台设计 前言简介正文资源链接&#xff08;含源码&#xff09; 前言 哈哈上学那会儿做的一个软件&#xff0c;当时把OpenCV各个基础算法都集成在了一起&#xff0c;还有一定程度的顺序执行部分相关算法的功能&#xff0c;那时候网上相关内容比较…

HTTP/HTTPS

HTTP HTTP协议介绍 HTTP 协议&#xff0c;全称超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;。顾名思义&#xff0c;HTTP 协议就是用来规范超文本的传输&#xff0c;超文本&#xff0c;也就是网络上的包括文本在内的各式各样的消息&#xff0c;具体来说…

常见的 Linux 运维与开发问题及解决方案20240905

常见的 Linux 运维与开发问题及解决方案 在日常的 Linux 运维与开发过程中&#xff0c;我们常常会遇到一些脚本执行错误、文件格式问题、日志管理以及编辑器设置等困扰。这些问题虽然看似简单&#xff0c;但如果处理不当&#xff0c;可能会影响系统的稳定性和开发效率。本文将…

Docker私人学习笔记

俗话说“好记性不如烂笔头”&#xff0c;编程的海洋如此的浩大&#xff0c;养成做笔记的习惯是成功的一步&#xff01; 此笔记主要是antlr4.13版本的笔记&#xff0c;并且笔记都是博主自己一字一字编写和记录&#xff0c;有错误的地方欢迎大家指正。 一、基础概念&#xff1a;…

【BIO、NIO、AIO适用场景分析】

BIO、NIO、AIO适用场景分析 1.适用场景&#xff1a;2.BIO基本介绍2.1 BIO示例 3.Java NIO基本介绍3.1 NIO中三个核心部分&#xff1a;3.2 NIO非阻塞3.3 buffer案例3.4 比较 1.适用场景&#xff1a; BIO方式适用于连接数目比较少且固定的架构&#xff0c;这种方式对服务器资源要…

MySQL的索引原理及使用

索引模型&#xff08;基础数据结构&#xff09; 索引模型&#xff1a;哈希表、有序数组、搜索树&#xff0c;这里的模型是指索引的底层实现的基本数据结构&#xff0c;Mysql中不同的引擎对于索引的实现结构说的即是索引模型。 有序数组 有序数组这个在数据结构中是最基础的结…

分销--分销人员管理系统架构文档

1. 概述 1.1 目的 本系统架构文档旨在描述分销人员管理系统的整体设计与结构&#xff0c;明确系统的功能模块、流程和技术实现&#xff0c;确保系统能够有效支持分销员的招募、管理及监督。 1.2 范围 本文档涵盖了分销员招募与管理。包括分销员列表、招募流程等。 2. 系统…

解析 Agent 在国外智慧金融领域的一个落地场景:智能顾投

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 随着这两年蓬勃发展的人工智能技术在金融投资领域和股票证券市场的逐步推广运用,基于金融大模型的智能体(Agent)在智慧顾问投资领域就越来越多引发人们的关注了,本文将简介目前国外将其主要服务于…

开发适合el-dialog的拉伸拖拽自定义指令和适配自定义的图片查看组件

目录 一、应用场景 二、开发流程 1.自定义指令 2.功能原理 3.难点 三、详细开发 四、总结 一、应用场景 我之前有开发过一个图片查看的组件&#xff0c;这个组件可在单页面打开&#xff0c;也可以在弹窗里打开&#xff0c;但是弹窗因为是比较固定&#xff0c;所以有一些…

【媒体邀约】论企业宣传与媒体合作

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 在探讨企业宣传与媒体合作的策略和实施时&#xff0c;可以从以下结构进行论述&#xff1a; 一、前言 企业宣传与媒体合作在当代商业环境中扮演着至关重要的角色。随着信息科技的发展和媒…

字节老公年薪百万后,回家“牛哄哄”的,飘了?

在互联网大厂的世界里&#xff0c;年薪百万似乎成了高管们的标配。但当这个数字成为家庭生活的一部分时&#xff0c;它所带来的影响远不止是银行账户上的变动。今天&#xff0c;我们就来探讨一下&#xff0c;当一位互联网大厂的高管年薪百万后&#xff0c;他的家庭生活会发生怎…

JavaWeb案例

环境搭建 先创建好数据库&#xff0c;建表并插入数据 create database talis; use talis;-- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null com…

VS Code 支持编辑许多编程语言工具的优势

VS Code 支持编辑许多编程语言工具的优势 VS Code是一款轻量级、可扩展的编程工具&#xff0c;具有许多功能和特点&#xff0c;可以提高开发人员的工作效率。以下是VS Code相对于其他编程工具的一些优势和特点&#xff1a; 轻量级&#xff1a;与其他IDE相比&#xff0c;VS Cod…

数学建模强化宝典(14)Fisher 最优分割法

前言 Fisher最优分割法是一种对有序样品进行聚类的方法&#xff0c;它在分类过程中不允许打破样品的顺序。这种方法的目标是找到一种分割方式&#xff0c;使得各段内样品之间的差异最小&#xff0c;而各段之间的差异最大。以下是关于Fisher最优分割法的详细介绍&#xff1a; 一…

Python-FLASK上传文件

一、HTML文件 1、avator.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form method"post" enctype"multipart/form-dat…

24.9月份工作日记

9.2,上班第一天&#xff0c;前几天都没好好写日记了&#xff0c;今天接到一个新的项目&#xff0c;感觉我是主力&#xff0c;不过还好。现在只考虑数据库的问题。后面再考虑其他的&#xff0c;貌似是充电桩维修相关。 9.3&#xff0c;罪过啊罪过&#xff0c;又在摸鱼&#xff…

线性代数 第五讲:线性方程组_齐次线性方程组_非齐次线性方程组_公共解同解方程组_详解

线性方程组 文章目录 线性方程组1.齐次线性方程组的求解1.1 核心要义1.2 基础解系与线性无关的解向量的个数1.3 计算使用举例 2. 非齐次线性方程的求解2.1 非齐次线性方程解的判定2.2 非齐次线性方程解的结构2.3 计算使用举例 3.公共解与同解3.1 两个方程组的公共解3.2 同解方程…

[已更新代码思路]2024数学建模国赛高教社杯C题:农作物的种植策略 思路代码文章助攻手把手保姆级

发布于19:25有问题后续会修正!! 问题一代码展示: 问题一部分代码分享: #!/usr/bin/env python # coding: utf-8# In[15]:import pandas as pd# In[16]:# 读取Excel文件 file_path 附件2.xlsx # 请根据实际路径修改 data pd.read_excel(file_path, sheet_name2023年统计的相…

The Prompt Report 2

The Prompt Report 提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》 主要内容 Core Prompting Techniques Text based Techniques&#xff1a;PRISMA流程&#xff0c;58中基于文本的提示技术&#xff0c;提示语术语分类表&#xff1b;M…