Python+Selenium爬取房产网站图片 如何按公寓分独立文件夹存储
代码修改方法
你需要调用Python标准库os完成文件夹创建逻辑,修改后的完整代码如下:
import os import time import requests from selenium import webdriver # 这里替换成你自己的driver初始化逻辑 driver = webdriver.Chrome() # 你已经整理好的公寓链接列表 links = [] # 新增公寓编号计数器,用来给文件夹命名 apartment_idx = 1 # 统一的根保存路径,避免重复写长路径 root_save_path = "C:/Users/potek/Jupyter_projects/apartments/" for link in links: url = link driver.get(url) # ========== 新增:创建当前公寓的专属文件夹 ========== current_folder = os.path.join(root_save_path, f"apartment{apartment_idx}") # exist_ok=True表示如果文件夹已经存在就不报错,直接用 os.makedirs(current_folder, exist_ok=True) # 原代码的爬图逻辑,顺便修正了你之前的缩进错误(之前翻页逻辑没放在circles循环里,会漏图) circles = len(driver.find_elements_by_class_name("svg-inline--fa.fa-circle.fa-w-16.css-1xkwzfp"))+1 print("公寓{}共找到{}张照片".format(apartment_idx, circles)) images_urls = set() for n in range(circles): images_containers = driver.find_element_by_class_name("css-ze3zoq").find_elements_by_tag_name("img") for image in images_containers: images_urls.add(image.get_attribute("src")) # 最后一张图不用点下一页 if n < circles -1: driver.find_element_by_class_name("css-11m3oda.excbu0j2").click() # 加个短等待,避免图片还没加载完就抓 time.sleep(0.5) # 下载图片到当前公寓的文件夹 for img_idx, img_url in enumerate(images_urls): # 拼接保存路径:当前文件夹/图片序号.jpg save_path = os.path.join(current_folder, f"{img_idx+1}.jpg") with open(save_path, "wb") as f: f.write(requests.get(img_url).content) # 处理完一套公寓,编号+1 apartment_idx += 1 driver.quit()
核心改动说明
- 用
os.makedirs在每次处理单套公寓前创建专属文件夹,命名规则就是你要求的apartment1、apartment2依次递增 - 下载图片时用
os.path.join拼接路径,自动适配系统的路径分隔符,避免手动写路径出错 - 顺便修正了你原代码里的缩进逻辑错误,原来的翻页和图片抓取逻辑没有放在翻页循环里,会导致只能抓到最后一页的图片
- 给图片按序号命名,比之前用时间戳更清晰,也不会出现同批次图片因为生成时间太近重名的问题
内容的提问来源于stack exchange,提问作者Stash
相关产品推荐
相关产品推荐

