新手向:如何用Python实现lovecherry.es商品图片逐张下载?
从lovecherry.es下载商品高清图片的Python实现(新手版)
一、先找到高清图的真实链接
你之前下载的是小图,大概率是抓取了页面上的缩略图链接。要拿到高清图,得先搞清楚网站把高清链接藏在哪:
- 打开任意商品页面,右键点击「下载」按钮,选择「检查」(Chrome/Firefox都有这个功能)
- 在弹出的开发者工具「Elements」面板里,找到这个下载按钮的HTML标签(一般是
<a>标签) - 查看标签里的
href属性,这个就是高清图的直链;如果是相对路径(比如开头是/),要把它和网站域名拼接成完整URL(比如https://www.lovecherry.es+ 相对路径) - 也可以观察规律:比如缩略图链接是
https://cdn.lovecherry.es/s/abc.jpg,高清图可能是把s/换成l/,变成https://cdn.lovecherry.es/l/abc.jpg,这种情况直接替换字符串就行
二、Python代码实现(一步一步来)
1. 先装必要的库
打开命令提示符(Windows)或终端(Mac/Linux),输入以下命令安装需要的工具:
pip install requests beautifulsoup4
2. 完整代码(带注释)
把下面的代码复制到Python文件里(比如download_cherry.py),然后按注释提示修改参数:
import requests from bs4 import BeautifulSoup import os # 可选:如果需要延迟避免被封,导入time库 # import time # 获取单个商品页面的所有高清图片链接 def get_highres_links(product_page_url): # 模拟浏览器请求,避免被网站拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/118.0.0.0 Safari/537.36" } # 发送请求获取页面内容 res = requests.get(product_page_url, headers=headers) res.encoding = "utf-8" # 确保中文不乱码 # 解析HTML页面 soup = BeautifulSoup(res.text, "html.parser") # 这里替换成你找到的下载按钮的CSS选择器 # 比如你检查后发现下载按钮的class是"product-download",就写".product-download" download_btns = soup.select(".download-btn") # 提取所有高清链接 highres_urls = [] for btn in download_btns: if "href" in btn.attrs: link = btn["href"] # 如果是相对路径,拼接成完整URL if link.startswith("/"): link = "https://www.lovecherry.es" + link highres_urls.append(link) return highres_urls # 下载图片到本地文件夹 def save_images(image_urls, save_dir): # 创建保存文件夹,不存在就新建 if not os.path.exists(save_dir): os.makedirs(save_dir) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/118.0.0.0 Safari/537.36" } for index, url in enumerate(image_urls): try: # 发送请求下载图片 img_res = requests.get(url, headers=headers) img_res.raise_for_status() # 如果请求失败,直接报错 # 生成文件名:可以用原URL里的文件名,或者自定义序号 # 用原文件名:filename = url.split("/")[-1] filename = f"商品图_{index+1}.jpg" save_path = os.path.join(save_dir, filename) # 写入文件 with open(save_path, "wb") as f: f.write(img_res.content) print(f"搞定:{save_path}") # 可选:每下载一张停1秒,避免请求太频繁被封 # time.sleep(1) except Exception as e: print(f"下载失败 {url}:{str(e)}") # 主程序:修改这里的参数 if __name__ == "__main__": # 替换成你要爬的商品页面URL target_product_url = "https://www.lovecherry.es/你的商品页面链接" # 替换成你想保存图片的本地文件夹路径(比如电脑桌面的lovecherry_images文件夹) save_folder = "./lovecherry_images" # 第一步:获取高清链接 links = get_highres_links(target_product_url) if not links: print("没找到高清链接!检查一下下载按钮的CSS选择器是不是写错了") else: # 第二步:下载图片 save_images(links, save_folder)
三、新手必看注意事项
- 调整CSS选择器:代码里的
.download-btn是假设的,你必须自己用浏览器开发者工具找真实的选择器。比如右键下载按钮→检查,看标签的class属性,比如<a class="product-img-download" href="xxx">,那选择器就写.product-img-download - User-Agent不能丢:网站会识别请求来源,不加User-Agent容易被拒绝访问
- 反爬应对:如果下载时出现403错误,或者被限制,可以加
time.sleep(1)(需要导入time库),让程序每下载一张停1秒;如果需要登录才能下载,那新手可以先手动登录浏览器,复制页面的Cookie,加到headers里(比如headers["Cookie"] = "你复制的Cookie内容") - 路径问题:保存文件夹路径如果是绝对路径,比如Windows的
C:\Users\你的名字\Desktop\cherry_images,要注意把反斜杠改成双反斜杠\\或者正斜杠/
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

