《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图
一、爬取豆瓣电影的图片封面
1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情,那么接下来我们将学习如何去爬取这些电影的图片,并将这些图片存放在文件夹中。
2、过程实现:
2.1、获取网页源码
首先还是和爬取电影名一样,先从网页获取到URL、然后再发送get请求、进行UA伪装,此处的代码如下:
if __name__ == '__main__':# UA伪装head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}# 获取urlurl = 'https://movie.douban.com/top250'# 发送请求response = requests.get(url, headers=head)# 返回数据类型cont_text = response.textprint(cont_text)#打印数据,用于查看是否爬取成功
此时有打印结果说明获取网页信息成功,接下来继续对这段长数据进行处理
注意:部分网页需要登录账号才能爬取,此时需要在URL那一栏找到Cookie

复制这段Cookie所对应的内容,将它增加到head里面去,如下列代码
# UA伪装head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0','Cookie':"ll="118183"; bid=H3WRaEnQCkI; _pk_id.100001.4cf6=5df013865257fa4c.1721368722.; __yadk_uid=rm8FHEGxJVSUzh7rJTZUbbphUwvgHrjb; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1721535985%2C%22https%3A%2F%2Fcn.bing.com%2F%22%5D; __utma=30149280.1409929673.1721368655.1721448364.1721535985.8; __utmc=30149280; __utma=223695111.1684481215.1721368722.1721448364.1721535985.5; __utmc=223695111"}
Cookie:用于记录用户的个人偏好和行为,例如登录信息、购物车内容、网站语言等。它们还可以用于跟踪用户的浏览行为和收集统计信息,以便网站可以优化用户体验和提供相关的广告。此为用户私密信息,不要随意传播
2.2、找到图片所对应的标签位置

2.2.1、定位所需内容所处标签位置
用以下代码直接定位到 li 标签位置,并获取所有的 li 标签信息
cont_text = response.text# print(cont_text)#打印数据,用于查看是否爬取成功#对得到的数据进行解析tree=etree.HTML(cont_text)# print(tree)#获取所有的li标签lis_li=tree.xpath("//ol[@class='grid_view']/li")# print(lis_li)
其打印结果为element对象:

2.2.2、获取图片的URL:
for li in lis_li:#对单个li标签进行xpath处理#xpath返回列表,用join去除列表img_url="".join(li.xpath('./div/div[1]/a/img/@src'))print(img_url)
即获取所有li标签,然后再通过xpath获取到图片的URL:
其打印结果为:

2.3、通过图片URL获取图片的二进制数据
有了图片的URL即可再通过get请求得到图片的二进制数据,因为图片是以二进制数据的类型存放,代码如下
img_url="".join(li.xpath('./div/div[1]/a/img/@src'))# print(img_url)#发送get请求img_response=requests.get(img_url,headers=head)#获取图片的二进制数据img_con=img_response.content#此处img_response.content没有用text是因为图片数据是二进制print(img_con)
其打印结果为二进制数据:
2.4、存放图片到文件夹
将获取的图片信息分别写入文件,存放在文件夹中,将图片名后缀名改为JPG格式即可完成图片的爬取
2.4.1 导入一个库用来创建文件夹来存放图片
import os.path
其创建方式为:
import os.pathos.mkdir('./film_pic') #此处为在当前代码同级目录下创建一个名为film_pic的文件夹
2.4.2 创建图片文件
命名图片名后,以二进制模式写入图片二进制编码数据:
with open(f'./film_pic/{i}.jpg','wb') as fp:fp.write(img_con)
2.5 爬取成功图片

二、完整代码实现
import os.path #导入包用来创建新的文件夹
import requests
from lxml import etreeif __name__ == '__main__':# UA伪装head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}# 获取urlurl = 'https://movie.douban.com/top250'# 发送请求response = requests.get(url,headers=head)# 返回数据类型cont_text = response.text# print(cont_text)#打印数据,用于查看是否爬取成功#对得到的数据进行解析tree=etree.HTML(cont_text)# print(tree)#获取所有的li标签lis_li=tree.xpath("//ol[@class='grid_view']/li")# print(lis_li)#将每一条li标签分别提取出来os.mkdir('./film_pic') #创建同级文件夹用来存放图片文件i=0for li in lis_li:#对单个li标签进行xpath处理#xpath返回列表,用join去除列表img_url="".join(li.xpath('./div/div[1]/a/img/@src'))# print(img_url)#发送get请求img_response=requests.get(img_url,headers=head)#获取图片的二进制数据img_con=img_response.contentprint(img_con)with open(f'./film_pic/{i}.jpg','wb') as fp:fp.write(img_con)i=i+1
三、随机生成UA标识
import fake_useragent#随机生成浏览器标识,其中包括window、mac、Android、iOS系统
head={'User-Agent':fake_useragent.UserAgent().random
}
相关文章:
《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图
一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情,那么接下来我们将学习如何去爬取这些电影的图片,并将这些图片存放在文件夹中。 2、过程实现: 2.1、获取网页源码 首先还是和爬取电影名…...
全新UI自助图文打印系统小程序源码/自助云打印机前后端源码
全新UI自助图文打印系统小程序源码,自助云打印机前后端源码。最新的自助图文打印系统和证件照云打印小程序源码采用了PHP作为后端开发语言,旨在为用户提供全面的自助打印服务。 这些服务覆盖了多种文件格式,包括文档、图片、表格等。除此之外…...
yolo5图片视频、摄像头推理demo
yolo5图片、视频推理demo 图片 import torch# 加载预训练模型 model torch.hub.load(./yolo5, custom, pathyolov5s.pt, sourcelocal)# 加载图片 img 1.jpg# 进行推理 results model(img)# 解析结果 detections results.xyxy[0].cpu().numpy() # [x1, y1, x2, y2, confid…...
Scala学习笔记19: 隐式转换和隐式参数
目录 第十九章 隐式转换和隐式参数1- 隐式转换1. 隐式准换函数: 施展魔法的咒语2. 隐式类: 为已有类型添加魔法3. 隐式转换规则: 魔法生效的条件4. 举例说明: 见证魔法的时刻5. 注意事项: 谨慎使用魔法 2. 隐式参数1. 语义: 隐藏在背后的参数2. 使用 隐式参数的方式2.1 隐式值:…...
用户登录安全是如何保证的?如何保证用户账号、密码安全?
1.HTTP协议直接传输密码(无加密) 前端 直接发送HTTP请求(无加密),攻击者可直接捕获网络包,看到下面的明文信息 因此,使用HTTP协议传输会直接暴露用户敏感信息。 2.HTTPS协议直接传输密码&…...
Java 写一个可以持续发送消息的socket服务端
前言 最近在学习flink, 为了模仿一个持续的无界的数据源, 所以需要一个可以持续发送消息的socket服务端. 先上效果图 效果图 socket服务端可以持续的发送消息, flink端是一个统计单词出现总数的消费端,效果图如下 源代码 flink的消费端就不展示了, 需要引入一些依赖和版本…...
Ubuntu2204搭建ceph17
Ceph 环境初始化搭建Ceph 本次实验基于VMware17 节点IPstorage01192.168.200.161storage01192.168.200.162storage01192.168.200.163 环境初始化 初始化基础环境,三节点执行 #!/bin/bash# 定义节点信息 NODES("192.168.200.161 storage01 root" "…...
Druid 面试题及答案整理,最新面试题
Druid连接池在项目中有哪些优势? 1、高性能: Druid连接池在性能方面进行了大量优化,可以快速回收和分配数据库连接,减少数据库访问延迟。 2、实时监控: 提供Druid Monitor监控功能,可以实时监控数据库访问性能和连接池状态,便于及时发现和解决问题。 3、扩展性强: 支持…...
数据库基础与安装MYSQL数据库
一、数据库管理系统DBMS 数据库技术是计算机科学的核心技术之一,具有完备的理论基础。使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据 1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问 2.可以…...
昇思25天学习打卡营第18天| DCGAN生成漫画头像
DCGAN,全称深度卷积对抗生成网络(Deep Convolutional Generative Adversarial Networks),是一种通过对抗训练生成图像的技术。它在判别器和生成器中都使用了卷积和转置卷积层。 训练分为两个部分:训练判别器和训练生成…...
【面试八股文】计算机操作系统
参考:大佬图解文章 → 小林coding 简介:之前在学习小林大佬的八股文时,摘录了一些个人认为比较重要的内容,方便后续自己复习。【持续更新ing ~💯】 注:加五角星标注的,是当前掌握不牢固的&…...
宝塔Wordpress 插件 Redis object cache 导致内存很高 80%以上的原因和解决
查看内存前X 使用以下命令查看前10,修改10数字即可查看前X ps aux | head -1;ps aux |grep -v PID |sort -rn -k 4 | head -10 查看cpu占用 查看前10 ps aux | head -1;ps aux |grep -v PID |sort -rn -k 3 | head -10 原因是 4GiB 内存的服务器,Redis会…...
node解析Excel中的考试题并实现在线做题功能
1、背景 最近公司安排业务技能考试,下发excel文件的题库,在excel里查看并不是很方便,就想着像学习驾考题目一样,一边看一边做,做完之后可以查看正确答案。 2、开始分析需求 题目格式如下图 需求比较简单,…...
怎么降低美国服务器硬盘故障率?
要降低硬盘故障率,首先需要了解其产生的原因,常见的美国服务器硬盘故障原因包括温度过高、振动过大、电流不稳定、质量问题等。对于美国服务器而言,由于其运行环境可能存在差异,如温湿度变化大、电力供应不稳定等,这些…...
Java---后端事务管理
代码世界聚眸光,昼夜敲盘思绪长。 算法心间精构建,编程路上细思量。 屏前架构乾坤定,键上飞驰智慧扬。 默默耕耘成果现,创新科技铸辉煌。 目录 一,概念 二,Spring事务管理 三,rollbackFor事务回…...
Leetcode 3223. Minimum Length of String After Operations
Leetcode 3223. Minimum Length of String After Operations 1. 解题思路2. 代码实现 题目链接:3223. Minimum Length of String After Operations 1. 解题思路 这一题还是比较简单的,其实就是想明白对于任何一个字符,如果其个数在3个或以…...
oops使用笔记
oops-plugin-excel-to-json 使用 gitee上的文档图片不可见 参考 > https://forum.cocos.org/t/topic/156800 配置,打开“项目设置”,拖动到最下面,有一个"Excel to Json",前3项采用默认配置吧Excel, 默认的Excel目录是与assets平级的excel目…...
redistemplate介绍与演示
redistemplate是一个用于在Redis中存储和检索数据的模板库。它提供了一组简单易用的函数和接口,使开发者能够更方便地使用Redis进行数据操作。 使用redistemplate,你可以实现以下功能: 存储和检索数据:redistemplate提供了存储和…...
代谢组数据分析(十五):基于python语言构建PLS-DA算法构建分类模型
介绍 本教程描述了一个具有二元分类结果的研究的典型代谢组学数据分析工作流程。主要步骤包括: 从Excel表格导入代谢物和实验数据。基于汇总QC的数据清洗。利用主成分分析可视化来检查数据质量。两类单变量统计。使用偏最小二乘判别分析(PLS-DA)进行多变量分析,包括: 模型…...
任务3 git基础知识(主要是pr的笔记)
任务要求 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/task.md 文档 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/readme.md 任务 任务1:提交PR https://github.com/InternLM/Tutorial/pull/1242 任务2:实践…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
