当前位置: 首页 > news >正文

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

亿牛云爬虫代理.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.16yun.cn"  # 代理服务器
proxy_port = "3100"  # 代理端口
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:# 关闭 WebDriverdriver.quit()
实例

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

结论

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 中级经济师考试通过率有多少?难度如何?
  • Android 架构模式之 MVP
  • 编程之路:从挫折到突破的心路历程
  • SQLite 插入一行并返回主键
  • 【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)
  • C# 获取当前电脑的mac地址
  • C#使用onnxruntime加载模型,部署到别人的PC上报错
  • UE5.4内容示例(5)UI_CommonUI - 学习笔记
  • Neo4j 图数据库入门
  • Kafka基本概念
  • 知乎信息流广告推广开户需要什么资质?
  • uniapp/vue如何实现一个子表单及子表单作用
  • 多核时代下线程间的内存可见性
  • [Meachines] [Easy] granny IIS 6.0+CVE-2017-7269+进程迁移+MS15-051权限提升
  • mov转mp4,这几款软件轻松转换格式!
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Babel配置的不完全指南
  • C学习-枚举(九)
  • es的写入过程
  • ES学习笔记(12)--Symbol
  • JavaScript学习总结——原型
  • node学习系列之简单文件上传
  • oschina
  • Vim Clutch | 面向脚踏板编程……
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 笨办法学C 练习34:动态数组
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端学习笔记之观察者模式
  • 用Python写一份独特的元宵节祝福
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 正则表达式
  • MyCAT水平分库
  • zabbix3.2监控linux磁盘IO
  • 通过调用文摘列表API获取文摘
  • #define
  • #FPGA(基础知识)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (C)一些题4
  • (C++哈希表01)
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第一天)包装对象、作用域、创建对象
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (论文阅读30/100)Convolutional Pose Machines
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .equals()到底是什么意思?
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强