本文共 1761 字,大约阅读时间需要 5 分钟。
本文将教你如何利用Python的BeautifulSoup和Requests库,从网页上抓取图片,并将其保存到本地电脑中。通过简单易懂的步骤,你将能够轻松实现图片的批量下载。
首先,我需要选择一个合适的目标网站。为了演示方便,我选择了699pic.com上的风景图片页面:http://699pic.com/sousuo-218808-13-1.html。
接下来,我需要使用工具来定位图片的位置。推荐使用Firebug或Chrome DevTools,通过这些工具可以快速定位图片的位置。
从开发者工具中可以看到,图片的加载方式是通过<img>标签加载的,并且图片的class属性为"lazy"。这一点非常重要,因为它将帮助我定位所有图片。
在已知图片的class属性为"lazy"的情况下,我可以使用BeautifulSoup库来抓取所有的图片标签。
首先导入必要的库:
from bs4 import BeautifulSoupimport requestsimport os
使用requests库获取目标页面的内容:
r = requests.get("http://699pic.com/sousuo-218808-13-1.html")fengjing = r.content 使用BeautifulSoup解析页面内容:
soup = BeautifulSoup(fengjing, "html.parser")
找出所有class为"lazy"的图片标签:
images = soup.find_all(class_="lazy")
这一步将返回所有图片标签的对象列表。
接下来,我需要将这些图片下载到本地电脑中。
在当前脚本文件夹下创建一个"jpg"的子文件夹:
os.makedirs("jpg") 使用os.getcwd()获取当前脚本的路径:
current_path = os.getcwd()
为每张图片指定一个唯一的存储路径。为了避免命名重复,我将使用图片的标题作为文件名:
with open(os.path.join(current_path, "jpg", title + ".jpg"), "wb") as f: f.write(requests.get(jpg_rl).content)
这里,title是图片的标题,jpg_rl是图片的URL地址。
以下是一个完整的代码示例,展示了从网页上抓取图片并将其保存到本地的完整流程:
from bs4 import BeautifulSoupimport requestsimport os# 获取目标页面的内容r = requests.get("http://699pic.com/sousuo-218808-13-1.html")fengjing = r.content# 解析页面内容soup = BeautifulSoup(fengjing, "html.parser")# 找出所有图片标签images = soup.find_all(class_="lazy")# 遍历每一张图片for i in images: try: # 提取图片的URL地址 jpg_rl = i["data-original"] # 提取图片的标题 title = i["title"] # 下载图片并保存到本地 with open(os.path.join(os.getcwd() + "\\jpg\\" + title + ".jpg"), "wb") as f: f.write(requests.get(jpg_rl).content) except: pass 通过以上步骤,你已经掌握了如何从网页上抓取图片并将其保存到本地电脑中。这个方法简单易懂,适合对Python编程有一定基础的用户使用。希望你在实践中能取得好成绩!
转载地址:http://hymbz.baihongyu.com/