前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium与Web Scraping:自动化获取电影名称和评分的实战指南

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

原创
作者头像
jackcode
发布2024-08-19 11:59:24
1210
发布2024-08-19 11:59:24
举报
文章被收录于专栏:爬虫资料
爬虫代理
爬虫代理
背景/引言

在信息化高度发展的今天,获取数据的能力变得尤为重要。通过 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 的设置。

代码语言:python
代码运行次数:0
复制
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相关信息 爬虫代理加强版
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:
    # 关闭 WebDriver
    driver.quit()
实例

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

结论

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景/引言
  • 正文
    • 1. Selenium 简介与基本设置
      • 2. 代理 IP 的设置
        • 3. User-Agent 和 Cookie 的设置
          • 4. 代码实现
          • 实例
          • 结论
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档