【python爬虫】豆瓣爬虫学习

文章目录

  • 网页地址
  • 爬虫目标
  • 技术栈
  • 爬虫代码
  • 注意事项


Python爬虫学习:我们可以选择一个相对简单的网站进行数据抓取。这里以抓取“豆瓣电影Top250”的信息为例,这个网站提供了丰富的电影数据,包括电影名称、评分、导演、演员等信息。
在这里插入图片描述

网页地址

  • https://movie.douban.com/top250

爬虫目标

  • 抓取每部电影的名称、评分、简介和前几位主演的名字。

技术栈

  1. Python 3.x
  2. requests:用于发送HTTP请求。
  3. BeautifulSoup4:用于解析HTML文档。

爬虫代码

首先,确保你已经安装了requestsbeautifulsoup4库,如果没有安装,可以通过以下命令安装:

pip install requests beautifulsoup4

以下是完整的爬虫代码:

# 导入requests库用于发送HTTP请求
import requests
# 导入BeautifulSoup库用于解析HTML文档
from bs4 import BeautifulSoup

# 定义一个函数用于获取电影数据
def fetch_movie_data():
    # 设置请求的URL,这里是豆瓣电影Top 250的页面
    url = "https://movie.douban.com/top250"
    # 设置请求头,伪装成浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    
    # 发送GET请求,获取页面内容
    response = requests.get(url, headers=headers)
    # 使用BeautifulSoup解析获取到的页面内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 查找页面中所有的电影条目
    movies = soup.find_all('div', class_='item')
    
    # 遍历每部电影条目
    for movie in movies:
        # 提取电影标题
        title = movie.find('span', class_='title').text
        # 提取电影评分
        rating = movie.find('span', class_='rating_num').text
        # 提取电影的详细信息,这里只取第一行
        info = movie.find('div', class_='bd').find('p').text.strip().split('\n')[0]
        
        # 提取主演信息,可能有多个主演,通过分割和筛选获取
        actors = [actor.strip() for actor in info.split('/') if actor.strip().startswith('主演')]
        # 如果有主演信息,去除'主演:'并用逗号连接,否则显示'N/A'
        actors = ', '.join(actors).replace('主演:', '') if actors else 'N/A'
        
        # 打印电影的标题、评分和主演信息
        print(f"Title: {title}")
        print(f"Rating: {rating}")
        print(f"Actors: {actors}\n")

# 判断是否是直接运行此脚本,如果是,则调用fetch_movie_data函数
if __name__ == "__main__":
    fetch_movie_data()

在这里插入图片描述

代码解释:

这段Python代码定义了一个函数fetch_movie_data()用于从豆瓣电影Top250页面抓取电影数据,包括电影标题、评分以及主演信息,并打印这些信息。

下面是代码的详细解释:

  1. 导入必要的库

    • requests:用于发送HTTP请求。
    • BeautifulSoup:用于解析HTML文档。
  2. 定义fetch_movie_data函数

    • 设置目标URL为豆瓣电影Top250页面。
    • 设置请求头headers,其中包含一个模拟浏览器的User-Agent字符串,这是为了绕过网站可能的反爬虫机制。
  3. 发送GET请求并解析HTML

    • 使用requests.get方法发送GET请求到指定URL,获取响应文本。
    • 使用BeautifulSoup解析响应文本,创建一个soup对象,这个对象可以用来解析和提取HTML元素。
  4. 提取电影信息

    • 使用soup.find_all找到所有的电影条目,每个电影条目是一个div标签,类名为item
    • 对于每部电影,使用find方法来查找特定的信息:
      • 电影名称:查找类名titlespan标签。
      • 评分:查找类名rating_numspan标签。
      • 信息:查找div标签下的p标签,此标签通常包含电影的年份、国家、类型及演员等信息。
    • info中提取主演信息,通过查找以“主演”开始的字符串,然后去除“主演:”,并将所有主演名字用逗号连接起来。
  5. 打印电影信息

    • 打印电影标题、评分和主演信息。
  6. 执行函数

    • __main__模块下调用fetch_movie_data函数,执行抓取和打印操作。

注意事项

  1. 遵守网站规则:在实际操作中,请确保你的行为符合目标网站的robots.txt文件规定,不要对服务器造成过大负担。
  2. 动态加载内容:有些网站使用JavaScript动态加载内容,这可能需要使用如Selenium这样的工具来模拟浏览器行为。
  3. 错误处理:在实际应用中,应加入更完善的错误处理机制,比如重试策略、超时设置等。

漠漠水田飞白鹭,阴阴夏木啭黄鹂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/758725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试系列】数据工程师高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

Springboot与xxl-job

一、下载xxl-job项目 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉…

【three.js案例二】时空隧道

import * as THREE from ./build/three.module.js // 引入轨道控制器扩展库OrbitControls.js import { OrbitControls } from three/addons/controls/OrbitControls.js; // 引入dat.gui.js的一个类GUI import { GUI } from three/addons/libs/lil-gui.module.min.js;// 场景 co…

Go语言环境安装 第一个Go程序

Go下载地址 哪个能用用哪个。 https://go.dev/ https://golang.google.cn/(Golang官网的官方镜像) Windows 使用.msi安装包安装 下载msi文件 安装 双击运行go1.22.4.windows-amd64.msi Next 勾选I accept the terms in the License Agreement&…

ChatGPT的原理简介

目录 前言 1. 什么是ChatGPT? 2. GPT模型的基本原理 自注意力机制 预训练和微调 3. ChatGPT的工作流程 4. ChatGPT的优势和挑战 5. 实例对话 6. 未来展望 结语 前言 在这个智能科技飞速发展的时代,聊天机器人逐渐成为我们生活中的“新朋友”。…

Flask无法Debug

问题描述 Flask Debug的时候,可能会无法进入断点。我使用的是pycharm CE版本。 解决方案 确保pycharm安装路径不带空格。(带空格路径导致debug程序启动报错)Gevent compatible,这个东西老的pycharm版本必须勾选它,新…

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现:无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python,需要安装python开发扩展: 本文已经安装,我们需要找的是python安装所在目录,本文…

python–基础篇–正则表达式–是什么

文章目录 定义一:正则表达式就是记录文本规则的代码定义一:正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…

Spark2.0

目录 10.3 Spark运行架构 10.3.1 基本概念 10.3.2 架构设计 ​编辑 10.3.3 Spark运行基本流程 Spark运行架构特点 10.3 Spark运行架构 10.3.1 基本概念 RDD :是 Resillient Distributed Dataset (弹性分布式数据集)的简称,是分…

界面组件DevExpress WinForms v24.1 - 支持DateOnly TimeOnly类型

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

Java17-时间类、包装类

目录 Date类 概述 常用方法 SimpleDateFormat类 概述 构造方法 格式规则 常用方法 Calendar类 概述 常用方法 get方法示例 set方法示例 add方法示例 JDK8时间相关类 ZoneId 时区 Instant 时间戳 ZoneDateTime 带时区的时间 DateTimeFormatter 用于时间的格式…

摸鱼大数据——Spark基础——Spark环境安装——Spark Local[*]搭建

一、虚拟机配置 查看每一台的虚拟机的IP地址和网关地址 查看路径: cat /etc/sysconfig/network-scripts/ifcfg-ens33 2.修改 VMware的网络地址: 使用VMnet8 3.修改windows的对应VMware的网卡地址 4.通过finalshell 或者其他的shell连接工具即可连接使用即可, 连接后, 测试一…

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。)

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。) 在连接SQL Server2008R2数据库时发生错误。 连接字符串:server127.0.0.1;uidsa;pwd1;databasedb; 解决办法: 方…

如何从华为恢复永久删除的视频?

在从华为恢复永久删除的视频时,这个过程可能很艰难。您可能想知道,如何从华为恢复永久删除的视频?本指南全面概述了有效的恢复方法。无论删除是意外还是由于其他问题,一些策略和工具都可以帮助您恢复宝贵的视频内容。我们将探索这…

代码随想录算法训练营第四十六天| 121. 买卖股票的最佳时机 ,122.买卖股票的最佳时机II,123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {if(prices.length 0){return 0;}int[][] dp new int[prices.length][2];dp[0][0] 0;dp[0][1] -prices[0];for(int i1;i<prices.length;i){dp[i][0…

pandas数据分析(2)

列 执行df.columns获取DataFrame列信息&#xff1a; 如果在构造DataFrame时没有提供列名&#xff0c;那么pandas会用 从0开始的数字为列编号。我们也可以为列命名&#xff0c;和为索引命名类似&#xff1a; 同样也可以重命名列名&#xff1a; 使用df.drop删除列&#xff1a; 删…

Perfetto详细解析

一、Perfetto基础 1、Perfetto介绍 Perfetto 是一个生产级的开源堆栈&#xff0c;用于提高性能 仪器和痕量分析。与 Systrace 不同&#xff0c;它提供数据源超集&#xff0c;可以用 protobuf 编码的二进制流形式记录任意长度的跟踪记录。可以将Perfetto理解为systrace的升级版…

Vitis IDE 艰难切换--从传统 Vitis GUI 到 2024.1 统一软件界面

目录 1. 简介 2. 界面展示 2.1 启动 2.2 Flow Navigator 2.1.1 C Simulation Dialog 2.1.2 C Synthesis 2.1.3 C/RTL Co-simulation 2.1.4 Implementation 2.1.5 Package 3. C Synthesis 详解 3.1 Classic Configuration Settings 3.1.1 config_array_partition 3…

windosw下宝塔面板mysql无法使用的问题

先了解一下什么是wsl1和wsl2 WSL 1:WSL 1 使用的是一个兼容层,通过翻译 Linux 系统调用,使其能够在 Windows 内核上运行。这种方法的性能较好,但并不能完全兼容所有的 Linux 功能。WSL 2:WSL 2 通过使用真正的 Linux 内核在轻量级虚拟机 (VM) 中运行 Linux,这使得它能更好…

java基于ssm+jsp 个人交友网站

1前台首页功能模块 个人交友网站&#xff0c;在系统首页可以查看首页、交友信息、线下活动、系统公告、论坛信息、我的、跳转到后台、客服等内容&#xff0c;如图1所示。 图1系统功能界面图 用户注册&#xff0c;在用户注册页面可以填写用户账号、密码、用户姓名、年龄等信息进…