引言:
在本文中,我们将学习如何使用Python创建一个简单的图片爬虫。
我们将利用requests
库来发送HTTP请求,BeautifulSoup
库来解析HTML页面,以及**os
和shutil
**库来下载和保存图片。通过这个教程,你将学会如何爬取网页上的图片并保存到本地。
目录
一、准备工作
在开始之前,请确保你已经安装了Python,并且安装了以下库:
你可以使用以下命令来安装这些库:
二、代码实现
三、代码解析
一、准备工作
在开始之前,请确保你已经安装了Python,并且安装了以下库:
requests
:用于发送HTTP请求beautifulsoup4
:用于解析HTML页面
你可以使用以下命令来安装这些库:
pip install requests beautifulsoup4
二、代码实现
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from urllib.request import urlretrieve
def download_images(url, save_dir):
"""
下载指定网页上的所有图片并保存到本地文件夹
:param url: 目标网页的URL
:param save_dir: 图片保存的目录
"""
# 创建保存图片的目录
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 发送HTTP请求
response = requests.get(url)
response.raise_for_status() # 如果请求失败,抛出异常
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有的图片链接
image_links = soup.find_all('img')
# 下载并保存图片
for img in image_links:
img_url = img.get('src')
# 如果图片链接是相对路径,则将其转换为绝对路径
if not img_url.startswith(('http://', 'https://')):
img_url = urljoin(url, img_url)
# 下载图片
img_name = os.path.join(save_dir, img_url.split('/')[-1])
urlretrieve(img_url, img_name)
print(f"Downloaded: {img_name}")
# 使用示例
url = "https://example.com" # 替换为你要爬取的网页的URL
save_dir = "images" # 图片保存的目录
download_images(url, save_dir)
三、代码解析
- 导入库:首先,我们导入了所需的库,包括
os
、requests
、BeautifulSoup
、urllib.parse
和urllib.request
。- 定义函数:我们定义了一个名为
download_images
的函数,它接受两个参数:url
(目标网页的URL)和save_dir
(图片保存的目录)。- 创建保存目录:如果指定的保存目录不存在,我们将创建它。
- 发送HTTP请求:使用**
requests.get
方法发送HTTP请求,并使用response.raise_for_status
**检查请求是否成功。- 解析页面:使用**
BeautifulSoup
解析HTML页面,并查找所有的<img>
**标签,以获取图片链接。- 下载并保存图片:遍历每个图片链接,将其转换为绝对路径(如果需要),并使用**
urlretrieve
**方法下载图片然后,将图片保存到指定的目录,并打印出下载的文件名。- 使用示例:最后,我们提供了一个使用示例,包括目标网页的URL和图片保存的目录。
四、注意事项
- 在使用爬虫时,请确保遵守目标网站的
robots.txt
文件和使用条款,并尊重他人的版权和隐私。 - 不要对网站造成过大的压力或进行恶意爬取。
- 可以根据需要进一步扩展此代码,例如增加错误处理、添加代理支持、限制并发请求数、使用异步IO等。
通过本文的学习,你已经掌握了如何使用Python创建一个简单的图片爬虫。你可以根据自己的需求进一步扩展和优化这个爬虫。记得在使用爬虫时要遵守相关规定和法律法规,尊重他人的权益。
这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
如果大家对Python感兴趣,这套python学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论
④ 20款主流手游迫解 爬虫手游逆行迫解教程包
⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解
⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解
⑦ 超300本Python电子好书,从入门到高阶应有尽有
⑧ 华为出品独家Python漫画教程,手机也能学习
⑨ 历年互联网企业Python面试真题,复习时非常方便
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以点击下方微信卡片免费领取 ↓↓↓【保证100%免费】