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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。

爬虫代理.jpg

介绍

随着互联网数据的爆炸式增长,爬虫技术成为了获取信息的重要工具。在实际应用中,如何提升浏览器自动化的效率是开发者常常面临的挑战。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.text
    link = 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的设置,爬虫程序可以更稳定、真实地模拟用户行为,从而获取更多有价值的数据。

相关文章
|
8天前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
|
10天前
|
Web App开发 Linux iOS开发
Chrome浏览器如何导出所有书签并导入书签
【11月更文挑战第4天】本文介绍了如何在 Chrome 浏览器中导出和导入书签。导出时,打开书签管理器,点击“整理”按钮选择“导出书签”,保存为 HTML 文件。导入时,同样打开书签管理器,点击“整理”按钮选择“导入书签”,选择之前导出的 HTML 文件即可。其他主流浏览器也支持导入这种格式的书签文件。
|
17天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
113 9
|
13天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
1月前
|
Web App开发 开发者
|
1月前
|
Web App开发 JSON 安全
Chrome浏览器的跨域问题
【10月更文挑战第6天】
|
2月前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
284 6
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
2月前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
74 4
|
2月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
2月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。