Python 爬虫 案例 之 豆瓣Top250电影数据

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

课程亮点:

1、动态数据抓包演示

2、csv文件保存

3、requests模块的使用

4、parsel解析数据的使用

环境介绍:

  • python 3.8

  • pycharm

模块使用:

  • requests >>> pip install requests

  • parsel >>> pip install parsel

  • csv

第三方模块安装:win + R 输入cmd 输入安装命令 pip install 模块名

写代码代码基本步骤:

  1. 发送请求, 确定url地址 然后对其发送请求

  2. 获取数据, 获取服务器返回的响应数据内容

  3. 解析数据, 提取我们想要内容

  4. 保存数据

  5. 多页数据爬取

代码展示

导入模块

import requests  # 数据请求模块 第三方模块 pip install requests
import parsel  # 数据解析模块 第三方模块 pip install parsel
import csv
import time # 时间模块

保存数据

f = open('豆瓣Top250.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题','导演','演员','电影年份','拍摄国家','电影类型','电影评分','评论人数','电影简介',
])
csv_writer.writeheader()

多页爬取

num = 1
for page in range(0, 250, 25):print(f'正在爬取第{num}页数据内容')num += 1time.sleep(1)
  1. 发送请求, 确定url地址 然后对其发送请求
    url = f'https://movie.douban.com/top250?start={page}&filter='# User-Agent 浏览器的基本标识 基本信息 headers请求头 主要是把python代码进行伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}response = requests.get(url=url, headers=headers)
  1. 获取数据, 获取服务器返回的响应数据内容

    print(response.text) # response.text 获取响应体的文本数据 字符串数据类型 >>> re正则表达式

  2. 解析数据, 提取我们想要内容

    解析数据方法: re正则表达式 / xpath / css选择器

    parsel解析模块里面css选择器

    把获取到的html字符串数据类型进行转换

    selector = parsel.Selector(response.text)# css选择器 主要根据标签属性内容提取数据lis = selector.css('.grid_view li')  # 获取所有li标签 返回的数据 列表, 列表里面没一个元素都是selector对象for li in lis:title = li.css('.info .hd span.title:nth-child(1)::text').get()  # 电影的名字movie_info_list = li.css('.bd p:nth-child(1)::text').getall()  # 电影的信息# getall 返回的是列表 strip() 去除字符串左右两端空格actor_list = movie_info_list[0].strip().split('   ')if len(actor_list) > 1:actor_1 = actor_list[0].replace('导演: ', '')  # 导演actor_2 = actor_list[1].replace('主演: ', '').replace('/...', '')  # 主演movie_info = movie_info_list[1].strip().split(' / ')movie_year = movie_info[0]  # 电影的年份movie_country = movie_info[1]  # 电影的国家movie_type = movie_info[2]  # 电影的类型movie_sum = li.css('.inq::text').get()  # 电影简介movie_num = li.css('.rating_num::text').get()  # 电影评分comment = li.css('.star span:nth-child(4)::text').get().replace('人评价', '')  # 评论人数else:actor_1 = actor_list[0]actor_2 = 'None'dit = {'标题': title,'导演': actor_1,'演员': actor_2,'电影年份': movie_year,'拍摄国家': movie_country,'电影类型': movie_type,'电影评分': movie_num,'评论人数': comment,'电影简介': movie_sum,}csv_writer.writerow(dit)print(title, actor_1, actor_2, movie_year, movie_country, movie_type, movie_sum, movie_num, comment, sep='|')

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JMeter】配置元件

1. 元件的分类 HTTP Request Default 作用: 可以配置成通用的信息,可复用 ​​​​​​​ JDBC Connection Configuration 作用:连接数据库 前提: 下载好对应数据类型的jar包 ​​​​​​​ HTTP Header Manager信息头管理…

shell编程系列- bash和sh的区别

文章目录 引言bash和sh的区别CentOS下的区别Ubuntu下的区别 最佳实践 引言 我们在编写shell脚本时,通常第一行都要声明当前脚本的执行程序,也就是常见的 #!/bin/sh 或者是 #!/bin/bash ,我们无论用哪一个脚本似乎都可以正常的执行&#xff0…

Python基础:推导式(Comprehensions)详解

1. 推导式概念 Python推导式(comprehensions)是一种简洁而强大的语法,用于从已存在的数据(列表、元组、集合、字典等)中创建新的数据结构。推导式包括: 列表推导式元组推导式字典推导式集合推导式 2. 列表…

第二证券:北证50飙升引发跷跷板效应

沪指周一低开震动,盘中一度杀跌进入3000点整数关口,尽管午后跌幅有所收窄,但毕竟收盘仍在30日均线下方。深成指相同低开低走,表现稍弱于沪指。到收盘,沪指报收3031.7点,跌落0.3%;深成指报收9785…

2019年8月29日 Go生态洞察:模块镜像和校验和数据库的发布

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

JUC(Java.util.concurrent)的常见类

目录 ♫ReentrantLock ♪什么是ReentrantLock ♪ReentrantLock的用法 ♪ReentrantLock和synchronized的区别 ♫Semaphore ♪什么是Semaphore ♪semaphore的用法 ♫CountDownLatch ♪什么是CountDownLatch ♪CountDownLatch的使用 ♫多线程环境使用ArrayList ♫多线程环…

第13周 预习、实验与作业:Java网络编程

目录 1 课前问题列表 1.编写一个网络程序,为了与其他网络程序通信,至少要知道对方的什么信息? 2.TCP与UDP协议有什么不同的呢?什么时候该选择哪种协议?HTTP使用的是TCP还是UDP?不重要的短信息传送之类的功能…

【每日一题】子数组的最小值之和

文章目录 Tag题目来源题目解读解题思路方法一:贡献法单调栈 写在最后 Tag 【贡献法】【单调栈】【数组】【2023-11-27】 题目来源 907. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…

MySQL使用函数和存储过程实现:向数据表快速插入大量测试数据

实现过程 1.创建表 CREATE TABLE user_info (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,pwd VARCHAR(20) DEFAULT NULL,phone_number VARCHAR(11) DEFAULT NULL,email VARCHAR(255) DEFAULT NULL,address VARCHAR(255) DEF…

Aapche Dubbo 不安全的 Java 反序列化 (CVE-2019-17564)

漏洞描述 Apache Dubbo 是一个高性能的、基于 Java 的开源 RPC 框架。 Apache Dubbo 支持不同的协议,它的 HTTP 协议处理程序是 Spring Framework 的 .org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter Spring Framework 的安全警告显示&am…

涵盖多种功能,龙讯旷腾Module第一期:物质结构

Module是什么 在PWmat的基础功能上,我们针对用户的使用需求开发了一些顶层模块(Module)。这些Module中的一部分是与已有的优秀工具的接口,一部分是以PWmat的计算结果为基础得到实际需要的物理量,一部分则是为特定的计…

利用STM32和蓝牙模块构建智能物联网设备的开发指南

智能物联网设备在现代生活中扮演着重要的角色,而STM32微控制器和蓝牙模块则为实现智能物联网设备提供了基础支持。本文将介绍如何使用STM32微控制器和蓝牙模块构建智能物联网设备的开发指南,包括硬件设计、蓝牙模块配置、传感器数据采集和云平台连接等关…