admin管理员组文章数量:1565351
文章目录
- 一、爬取目标
- 二、实现效果
- 三、准备工作
- 四、代码实战
-
- 4.1 导入模块
- 4.2 设置翻页
- 4.3 获取图片链接
- 4.4 下载图片
- 4.5 调用主函数
- 4.6 完整源码
一、爬取目标
本次爬取的目标是 又又又一个 某网站4K高清小姐姐图片:
二、实现效果
实现批量下载指定关键词的图片,存放到指定文件夹中:
三、准备工作
Python:3.10
编辑器:PyCharm
第三方模块,自行安装:
pip install requests # 网页数据爬取
pip install lxml # 提取网页数据
四、代码实战
4.1 导入模块
import requests # python基础爬虫库
from lxml import etree # 可以将网页转换为Elements对象
import time # 防止爬取过快可以睡眠一秒
import os # 创建文件
4.2 设置翻页
首先我们来分析一下网站的翻页,一共有10页:
第一页链接:
https://www.moyublog.com/95-2-2-0.html
第二页链接:
https://www.moyublog.com/95-2-2-1.html
第三页链接:
https://www.moyublog.com/95-2-2-2.html
可以看出每页只有95-2-2-
后面从第二页开始依次加上1
,所以用循环来构造所有网页链接:
if __name__ == '__main__':
# 页码
page_number = 10
# 循环构建每页的链接
for i in range(0,page_number+1):
# 页数拼接
url = f'https://www.moyublog/95-2-2-{i}.html'
4.3 获取图片链接
可以看到所有图片url都在 ul标签 > li标签 > a标签 > img标签下:
我们创建一个get_imgurl_list(url)
函数传入网页链接获取 网页源码,用xpath定位到每个图片的链接:
def get_imgurl_list(url,imgurl_list):
"""获取图片链接"""
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
# 发送请求
response = requests.get(url=url, headers=headers)
# 获取网页源码
html_str = response.text
# 将html字符串转换为etree对象方便后面使用xpath进行解析
html_data = etree.HTML(html_str)
# 利用xpath取到所有的li标签
li_list = html_data.xpath("//ul[@class='clearfix']/li")
# 打印一下li标签个数看是否和一页的电影个数对得上
print(len(li_list)) # 输出20,没有问题
for li in li_list:
imgurl = li.xpath(".//a/img/@data-original")[0]
print(imgurl)
# 写入列表
imgurl_list.append(imgurl)
运行结果:
点开一个图片链接看看,OK没问题:
4.4 下载图片
图片链接有了,定义一个get_down_img(img_url_list)
函数,传入图片链接列表,然后遍历列表,将所有图片下载到指定文件夹:
def get_down_img(imgurl_list):
# 在当前路径下生成存储图片的文件夹
os.mkdir("小姐姐")
# 定义图片编号
n = 0
for img_url in imgurl_list:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
# 每次发送请求,获取图片
img_data = requests.get(url=img_url, headers=headers).content
# 拼接图片存放地址和名字
img_path = './小姐姐/' + str(n) + '.jpg'
# 将图片写入指定位置
with open(img_path, 'wb') as f:
f.write(img_data)
# 图片编号递增
n = n + 1
4.5 调用主函数
这里我们可以设置需要爬取的页码:
if __name__ == '__main__':
page_number = 10 # 爬取页数
imgurl_list = [] # 存放图片链接
# 1. 循环构建每页的链接
for i in range(0,page_number+1):
# 页数拼接
url = f'https://www.moyublog/95-2-2-{i}.html'
print(url)
# 2. 获取图片链接
get_imgurl_list(url,imgurl_list)
# 3. 下载图片
get_down_img(imgurl_list)
4.6 完整源码
完整源码如下:
import requests # python基础爬虫库
from lxml import etree # 可以将网页转换为Elements对象
import time # 防止爬取过快可以睡眠一秒
import os
def get_imgurl_list(url,imgurl_list):
"""获取图片链接"""
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
# 发送请求
response = requests.get(url=url, headers=headers)
# 获取网页源码
html_str = response.text
# 将html字符串转换为etree对象方便后面使用xpath进行解析
html_data = etree.HTML(html_str)
# 利用xpath取到所有的li标签
li_list = html_data.xpath("//ul[@class='clearfix']/li")
# 打印一下li标签个数看是否和一页的电影个数对得上
print(len(li_list)) # 输出20,没有问题
for li in li_list:
imgurl = li.xpath(".//a/img/@data-original")[0]
print(imgurl)
# 写入列表
imgurl_list.append(imgurl)
def get_down_img(imgurl_list):
# 在当前路径下生成存储图片的文件夹
os.mkdir("小姐姐")
# 定义图片编号
n = 0
for img_url in imgurl_list:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
# 每次发送请求,获取图片
img_data = requests.get(url=img_url, headers=headers).content #
# 拼接图片存放地址和名字
img_path = './小姐姐/' + str(n) + '.jpg'
# 将图片写入指定位置
with open(img_path, 'wb') as f:
f.write(img_data)
# 图片编号递增
n = n + 1
if __name__ == '__main__':
page_number = 10 # 爬取页数
imgurl_list = [] # 存放图片链接
# 1. 循环构建每页的链接
for i in range(0,page_number+1):
# 页数拼接
url = f'https://www.moyublog/95-2-2-{i}.html'
print(url)
# 2. 获取图片链接
get_imgurl_list(url,imgurl_list)
# 3. 下载图片
get_down_img(imgurl_list)
运行结果:
下载成功了没有报错!!!
🤝 期待与你共同进步
🌱 亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!🙏
🌐 在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞👍、收藏🌟、评论💬和关注💖,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。🌟
📚 我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!💬
💪 无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章! 🎉
🌈 最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦!
关于Python学习指南
如果你对Python感兴趣,想通过学习Python获取更高的薪资,那下面这套Python学习资料一定对你有用!
资料包括:Python安装包+激活码、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。0基础小白也能听懂、看懂,跟着教程走,带你从零基础系统性地学好Python!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python学习软件
工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
三、Python入门学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
四、Python练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
五、Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~
六、Python面试资料
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
七、资料领取
上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取
版权声明:本文标题:Python爬虫实战(七)——批量下载4K高清小姐姐图片(附上完整源码) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727069650a1096023.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论