Selenium与Web Scraping:自动化获取电影名称和评分的实战指南

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在信息时代,Web Scraping 成为核心技能之一,尤其在面对如豆瓣电影这类动态网页时更为重要。本文介绍如何运用 Selenium 这一强大的自动化工具,配合代理 IP、User-Agent 及 Cookie,实现对豆瓣电影名称与评分的有效抓取。通过设置代理 IP 来规避访问限制,调整 User-Agent 以模拟真实用户行为,并利用 Cookie 保持会话状态,确保数据抓取的稳定性和隐蔽性。文中还提供了完整的 Python 代码示例,帮助读者快速上手实践。

爬虫代理.png

背景/引言

在信息化高度发展的今天,获取数据的能力变得尤为重要。通过 Web Scraping,我们可以从动态网页中提取有价值的信息,例如在豆瓣电影中获取电影名称和评分。然而,随着网站反爬虫措施的不断增强,传统的抓取技术已不再奏效。Selenium 作为一个强大的网页自动化工具,可以模拟用户操作,帮助我们实现更复杂和更可靠的数据抓取。
本文将带您深入了解如何利用 Selenium 实现自动化获取豆瓣电影中的电影名称和评分,并展示如何通过代理 IP、User-Agent 和 Cookie 技术来提升爬虫的隐蔽性和稳定性。

正文

1. Selenium 简介与基本设置

Selenium 是一个用于自动化浏览器操作的开源工具,能够控制浏览器执行点击、输入、滚动等操作,非常适合处理动态加载的网页。为了确保在抓取豆瓣电影数据时不被识别为爬虫,我们将使用代理 IP、设置 User-Agent 和 Cookie 来伪装请求。

2. 代理 IP 的设置

使用代理 IP 是为了防止被目标网站限制。这里我们使用亿牛云爬虫代理的域名和端口,并提供用户名和密码进行认证。

3. User-Agent 和 Cookie 的设置

通过设置 User-Agent,可以让服务器认为请求来自某个特定的浏览器版本,而不是自动化脚本。Cookie 的使用可以保持登录状态或模拟用户的会话,以获取需要的数据。

4. 代码实现

以下是使用 Selenium 实现自动化抓取豆瓣电影中电影名称和评分的完整示例代码。代码中已加入代理 IP、User-Agent 和 Cookie 的设置。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 设置代理IP相关信息 亿牛云爬虫代理 www.16yun.cn
proxy_host = "代理服务器" 
proxy_port = "代理端口"  
proxy_username = "你的用户名"
proxy_password = "你的密码"

# 配置 ChromeOptions
chrome_options = Options()
chrome_options.add_argument("--proxy-server=http://%s:%s@%s:%s" % (proxy_username, proxy_password, 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/100.0.4896.127 Safari/537.36")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--headless")  # 如果你希望无界面运行
chrome_options.add_argument("--no-sandbox")

# 设置 Cookies(这里假设你已经有一些 Cookie)
cookies = {
   
   
    "name": "your_cookie_name",
    "value": "your_cookie_value",
    "domain": "douban.com"
}

# 启动 WebDriver
service = Service(executable_path="你的ChromeDriver路径")
driver = webdriver.Chrome(service=service, options=chrome_options)

# 打开目标网页
driver.get("https://movie.douban.com")

# 添加 Cookie
driver.add_cookie(cookies)

# 刷新页面以使 Cookies 生效
driver.refresh()

try:
    # 等待页面元素加载
    wait = WebDriverWait(driver, 10)
    movie_name_elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='title']")))
    rating_elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//span[@class='rating_num']")))

    # 提取电影名称和评分
    movie_names = [element.text for element in movie_name_elements]
    ratings = [element.text for element in rating_elements]

    # 打印结果
    for name, rating in zip(movie_names, ratings):
        print(f"电影名称: {name}, 评分: {rating}")

finally:
    # 关闭 WebDriver
    driver.quit()

实例

假设我们需要抓取豆瓣电影中的电影名称和评分,以上代码展示了如何利用 Selenium 配置代理 IP、设置 User-Agent 和 Cookie 来实现这一目标。通过代理IP提高成功率,设置合适的 User-Agent 伪装请求,以及使用 Cookie 保持登录状态,我们能够有效地应对网站的反爬虫措施,获取所需的数据。

结论

Selenium 是一个功能强大的网页自动化工具,尤其在处理复杂的动态网页时表现出色。通过结合代理 IP、User-Agent 和 Cookie 等技术,我们可以更有效地进行 Web Scraping,获取需要的网络数据。本文提供的代码示例展示了如何抓取豆瓣电影中的电影名称和评分,您可以根据实际需求对其进行扩展和优化。

相关文章
|
2月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
110 8
|
15天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
123 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
24天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
76 19
Selenium IDE:Web自动化测试的得力助手
|
26天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
148 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
运维 Devops 应用服务中间件
自动化运维的利器:Ansible实战指南
【10月更文挑战第36天】在快速迭代的数字时代,自动化运维成为提升效率、减少错误的关键。Ansible以其简洁性、易用性和强大的功能脱颖而出。本文将带你了解Ansible的核心组件,通过实际案例深入其应用,并探讨如何结合最佳实践优化你的自动化工作流程。无论你是新手还是有经验的运维人员,本指南都将为你提供宝贵的知识和技能。
|
2月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
95 2
|
2月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
54 0
|
3月前
|
JavaScript 前端开发 安全
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
67 0
|
3月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
65 0