Python爬虫:高效抓取并下载网页图片

需积分: 5 16 下载量 196 浏览量 更新于2024-09-08 收藏 843B TXT 举报
本篇Python爬虫代码的主要目标是抓取指定网页上的图片并下载到本地。作者使用了requests库来发送HTTP请求获取网页内容,BeautifulSoup库解析HTML文档,提取所需图片的URL。以下是对关键知识点的详细解释: 1. **导入所需库**: 首先,代码导入了os、bs4(BeautifulSoup的缩写,用于HTML解析)和requests库。os库用于处理文件和目录操作,requests库用于发送HTTP请求,BeautifulSoup则用于解析HTML文档。 2. **创建目标目录**: 使用`os.makedirs()`函数创建名为“Ronaldo”的目录,如果已存在则不会重复创建,确保图片有适当的保存路径。 3. **设置基础URL**: `url='http://www.5857.com/cluo/'` 是要爬取的网页地址,这是一个假设的足球球星罗纳尔多相关图片的网页。 4. **循环爬取**: 使用`while True`进行无限循环,直到达到特定的限制(这里是爬取10张图片)。在循环内,通过`requests.get(url)`获取网页内容,并检查响应状态码是否正常。 5. **解析HTML,提取图片元素**: 使用BeautifulSoup的`select()`方法选择所有`<img>`标签,这些标签通常包含图片链接。`elems = soup.select('div[class="listbox"] img')` 这部分代码是关键,它定位到了包含图片的div元素。 6. **下载图片**: 对于每个找到的图片元素,再次发送GET请求获取图片的实际URL(`elem.get('src')`),然后使用`requests.get()`下载图片。使用`open()`函数以二进制模式创建目标文件,将图片数据写入文件,并通过`wb`参数表示写入二进制模式。如果遇到错误或达到限制,会捕获异常并打印失败消息。 7. **控制循环次数**: 当下载的图片数量达到10张时,使用`break`跳出循环。`count`变量用于跟踪下载图片的数量,每次循环增加1,直到达到预设的上限。 8. **结束信息**: 如果成功下载10张图片,会打印“Done”表明爬虫任务已完成。 总结来说,这段Python代码提供了一个基础的网页图片爬虫框架,用户可以根据实际需求修改URL、目标目录以及图片下载数量。通过理解这段代码,可以学习到如何使用Python的requests、BeautifulSoup等库进行网页内容的抓取和文件操作。