爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】

这篇具有很好参考价值的文章主要介绍了爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

在本篇博客中,我们将使用 Python 的 Selenium 和 BeautifulSoup 库来实现一个简单的网页爬虫,目的是爬取豆瓣电影TOP250的数据,并将结果保存到Excel文件中。
爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】,python案例分析归纳,爬虫,selenium,beautifulsoup,python

技术要点

爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】,python案例分析归纳,爬虫,selenium,beautifulsoup,python

Selenium

Selenium 是一个自动化测试工具,可以模拟用户在浏览器中的交互操作。我们将使用 Selenium 来打开网页、获取网页源码。

BeautifulSoup

BeautifulSoup 是一个用于解析HTML和XML文档的Python库。我们将使用 BeautifulSoup 来解析网页源码,提取需要的信息。

Openpyxl

Openpyxl 是一个用于读写 Excel 文档的库。我们将使用 Openpyxl 来创建一个 Excel 文件,并将爬取得到的数据保存到 Excel 文件中。

实现步骤:

导入所需库

我们需要导入 Selenium 的 webdriver 模块和 chrome.service 模块,以及 BeautifulSoup 和 openpyxl:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
import openpyxl

设置网页URL和驱动路径

在代码中,我们需要设置要爬取的网页URL和 ChromeDriver 的路径:

url = 'https://movie.douban.com/top250'
driver_path = "chromedriver"  // 设置成你的路径 

请替换 chromedriver 为您本地 ChromeDriver 的路径。

创建 ChromeDriver 服务

我们需要创建一个 ChromeDriver 服务,并指定 ChromeDriver 的路径:

service = Service(driver_path)

配置 ChromeDriver

我们需要配置 ChromeDriver,使用 headless 模式(无界面模式)打开浏览器,这样可以加快爬取速度:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(service=service, options=options)

创建 Excel 文件

我们将使用 openpyxl 创建一个 Excel 文件,并设置一个名为 ‘豆瓣电影TOP250’ 的工作表,并添加表头:

wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = '豆瓣电影TOP250'
sheet['A1'] = '电影'
sheet['B1'] = '影评'

爬取数据

我们使用循环来处理每一页的数据。在每一页中,我们执行以下步骤:

  • 构造带有翻页参数的URL
  • 打开 URL
  • 获取页面 HTML
  • 使用 BeautifulSoup 解析网页
  • 提取电影名称和影评
  • 将数据写入 Excel 文件
row_index = 2  # 从第二行开始写入数据

for page in range(0, 250, 25):
    # 构造带有翻页参数的URL
    page_url = f'{url}?start={page}'

    # 打开 URL
    driver.get(page_url)

    # 获取页面 HTML
    html = driver.page_source

    soup = BeautifulSoup(html, 'html.parser')
    movies = soup.find_all('div', class_='hd')

    for movie in movies:
        name = movie.a.span.text.strip()

        quote = movie.find_next('span', class_='inq')  # 查找下一个兄弟节点中的 <span class="inq">元素
        if quote:
            quote_text = quote.text.strip()
        else:
            quote_text = ''

        sheet.cell(row=row_index, column=1, value=name)
        sheet.cell(row=row_index, column=2, value=quote_text)
        row_index += 1

关闭浏览器

爬取完成后,我们需要关闭浏览器切记

driver.quit()

保存 Excel 文件

最后,我们保存 Excel 文件,并命名为 ‘豆瓣电影TOP250.xlsx’:

wb.save('豆瓣电影TOP250.xlsx')

至此,我们已经完成了整个代码的讲解了

完整代码

from selenium import webdriver  # 导入 Selenium 库中的 webdriver 模块,用于驱动浏览器进行自动化操作
from selenium.webdriver.chrome.service import Service  # 导入 Selenium 库中的 Chrome 服务模块,用于启动 ChromeDriver
from bs4 import BeautifulSoup  # 导入 BeautifulSoup 库,用于解析HTML页面
import openpyxl  # 导入 openpyxl 库,用于读写Excel文件

url = 'https://movie.douban.com/top250'  # 豆瓣电影TOP250的URL地址
driver_path = ""  # ChromeDriver的路径,需要设置为您本地的ChromeDriver路径

# 创建 ChromeDriver 服务
service = Service(driver_path)

# 配置 ChromeDriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 设置Chrome无头模式,即在后台运行浏览器,不弹出窗口
driver = webdriver.Chrome(service=service, options=options)  # 创建 ChromeDriver 实例

wb = openpyxl.Workbook()  # 创建一个新的Excel工作簿
sheet = wb.active  # 获取活动的工作表
sheet.title = '豆瓣电影TOP250'  # 设置工作表的名称为"豆瓣电影TOP250"
sheet['A1'] = '电影'  # 在第一行第一列(A1单元格)写入"电影"
sheet['B1'] = '影评'  # 在第一行第二列(B1单元格)写入"影评"

row_index = 2  # 行索引,从第二行开始写入数据

for page in range(0, 250, 25):  # 循环遍历每页,每页显示25部电影
    # 构造带有翻页参数的URL
    page_url = f'{url}?start={page}'

    # 打开 URL
    driver.get(page_url)

    # 获取页面 HTML
    html = driver.page_source

    soup = BeautifulSoup(html, 'html.parser')  # 使用BeautifulSoup解析HTML页面
    movies = soup.find_all('div', class_='hd')  # 查找所有class为'hd'的<div>元素,即电影信息所在的区块

    for movie in movies:
        name = movie.a.span.text.strip()  # 提取电影名称

        quote = movie.find_next('span', class_='inq')  # 查找下一个兄弟节点中的 <span class="inq">元素,即电影的影评
        if quote:
            quote_text = quote.text.strip()  # 若存在影评,则提取影评文本
        else:
            quote_text = ''  # 若不存在影评,则设置为空字符串

        sheet.cell(row=row_index, column=1, value=name)  # 在当前行的第一列写入电影名称
        sheet.cell(row=row_index, column=2, value=quote_text)  # 在当前行的第二列写入影评文本
        row_index += 1  # 行索引递增,准备写入下一行数据

# 关闭浏览器
driver.quit()

wb.save('豆瓣电影TOP250.xlsx')  # 将Excel文件保存为"豆瓣电影TOP250.xlsx"

导出的excel 效果图

爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】,python案例分析归纳,爬虫,selenium,beautifulsoup,python

未完待续…

爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】,python案例分析归纳,爬虫,selenium,beautifulsoup,python文章来源地址https://www.toymoban.com/news/detail-520949.html

到了这里,关于爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫入门指南(8): 编写天气数据爬虫程序,实现可视化分析

    天气变化是生活中一个重要的因素,了解天气状况可以帮助我们合理安排活动和做出决策。本文介绍了如何使用Python编写一个简单的天气数据爬虫程序,通过爬取指定网站上的天气数据,并使用Matplotlib库对数据进行可视化分析。通过这个例子,我们不仅可以学习Python的相关库

    2024年02月12日
    浏览(45)
  • 关于 Python 爬虫 JS 逆向的入门指南

    请注意,这篇指南只是一个概述,为了深入理解和实践,你可能需要额外的学习和实践。         Python 爬虫经常遇到需要逆向 JavaScript 生成的网站内容和逻辑的情况。这种技能对于爬取动态网站,尤其是那些使用了复杂 JS 逻辑和反爬虫技术的网站,尤其重要。 Python 爬虫概

    2024年01月16日
    浏览(43)
  • selenium入门详细指南(附淘宝抢购案例)

    selenium是一款web自动化测试工具,可以很方便地模拟真实用户对浏览器进行操作,它支持各种主流浏览器:IE、Chrome、Firefox、Safari、Opera等。 selenium有多种编程语言的客户端驱动,编写自动化脚本语法简洁,其中python的selenium库便非常的受欢迎。 你可以使用selenium做web测试或者

    2024年02月20日
    浏览(40)
  • 从零开始学习 Java:简单易懂的入门指南之爬虫(十六)

    Pattern:表示正则表达式 Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。 在大串中去找符合匹配规则的子串。 代码示例: 需求: ​ 把连接:https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i中所有的身份证号码都爬取出来。 代码示例: 需求: ​ 把

    2024年02月11日
    浏览(67)
  • 爬虫入门指南(5): 分布式爬虫与并发控制 【提高爬取效率与请求合理性控制的实现方法】

    在进行爬虫任务时,我们常常会面临两个重要问题:如何提高爬取效率以及如何合理控制请求的并发量,以避免对目标网站造成过大的压力。针对这些问题,本文将介绍分布式爬虫与并发控制的相关知识点,并演示使用Scrapy框架实现分布式爬虫,并对并发控制进行限制请求频

    2024年02月12日
    浏览(75)
  • 爬虫入门指南(6):反爬虫与高级技巧:IP代理、User-Agent伪装、Cookie绕过登录验证及验证码识别工具

    随着互联网发展,网站数据变得越来越重要。然而,为了保护其数据的安全性和唯一性,网站通常会采取反爬虫措施。本篇博客将介绍一些常见的反爬虫技巧,并提供代码案例和相关知识点,帮助您更好地应对反爬虫问题。 当我们使用爬虫程序频繁发送请求到同一个网站时,

    2024年02月12日
    浏览(47)
  • 使用爬虫爬取百度搜索结果及各网站正文(request库、selenium库和beautifulsoup库)

    任务: 给定搜索词,获取百度搜索结果 根据各项结果获取对应网站正文部分 header实际为一个字典,为访问百度时提供必要的信息。 一般来讲只需要提供 Cookie 就可以访问大多数网站,其余可能需要的还有 Host 、 User-Agent 等 通过分析百度搜索url可以发现 https://www.baidu.com/s?wd=茅

    2024年03月27日
    浏览(49)
  • 爬虫框架有Scrapy、BeautifulSoup、Selenium

    爬虫框架有Scrapy、BeautifulSoup、Selenium BeautifulSoup比Scrapy相对容易学习。 Scrapy的扩展,支持和社区比BeautifulSoup更大。 Scrapy应被视为蜘蛛,而BeautifulSoup则是Parser。 1.爬虫基础知识 在开始Python爬虫之前,需要先掌握一些基础知识。首先了解一下HTTP协议,掌握常见的请求方法和状

    2024年02月07日
    浏览(41)
  • Python爬虫实现(requests、BeautifulSoup和selenium)

    Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 下载requests库 pip install requests 实例: 属性和方法 属性或方法 说明 content 返回响应的内容,以字节为单位 headers 返回响应头,字典格式 json() 返回结果的 JSON 对象 request 返回请求此响应

    2024年02月07日
    浏览(46)
  • TortoiseGit 入门指南17:使用子模块

    子模块( submodule )是一种将一个 Git 仓库作为另一个 Git 仓库的子目录进行管理的方法。它允许你将一个 Git 仓库嵌套到另一个仓库中,并保持提交的独立。 这对于管理依赖关系和共享代码非常有用。比如我有一个模块库 common ,里面有一些所有项目都可能会用到的模块,这

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包