如何将多个值放入循环并将结果存为 csv python selenium
如果您想通过 Selenium 循环多个值(例如搜索关键词、产品链接等),并将每次循环的结果保存到 CSV 文件,可以按照以下步骤实现。
from selenium import webdriver from selenium.webdriver.common.by import By import time import csv # 输入的商品链接列表 product_urls = [ "https://www.amazon.com/Automate-Boring-Stuff-Python-2nd-ebook/dp/B07VSXS4NK/", "https://www.amazon.com/Python-Crash-Course-2nd-Edition/dp/1593279280/", # 添加更多链接... ] # 初始化 Selenium WebDriver options = webdriver.ChromeOptions() options.add_argument("--headless") # 无头模式(可选) driver = webdriver.Chrome(options=options) # 打开 CSV 文件,准备写入 with open("amazon_prices.csv", "w", newline="", encoding="utf-8") as csvfile: csvwriter = csv.writer(csvfile) # 写入表头 csvwriter.writerow(["Product URL", "Price", "Title"]) for url in product_urls: try: driver.get(url) time.sleep(3) # 等待页面加载 # 获取商品价格 try: price_element = driver.find_element(By.ID, "kindle-price") price = price_element.text.strip() except: price = "Price not found" # 获取商品标题 try: title_element = driver.find_element(By.ID, "productTitle") title = title_element.text.strip() except: title = "Title not found" # 打印结果(调试用) print(f"Scraped {url} -> Price: {price}, Title: {title}") # 写入到 CSV 文件 csvwriter.writerow([url, price, title]) except Exception as e: print(f"Error scraping {url}: {e}") csvwriter.writerow([url, "Error", "Error"]) # 关闭 WebDriver driver.quit()
product_urls
包含多个需要抓取的商品链接。
循环抓取:
driver.get(url)
如果元素不存在,则捕获异常并记录“未找到”。
CSV 文件保存:
csv
每次抓取的结果写入一行。
异常处理:
time.sleep
可用 Selenium 的 WebDriverWait 替代固定等待时间。
WebDriverWait
反爬机制:
Amazon 等网站可能会检测频繁请求,添加 headers 和代理来模仿正常用户行为。
headers
文件保存路径:
CSV 文件将保存在当前工作目录。如果需要特定路径,可以修改 open 函数中的路径。
open
动态内容处理:
通过这种方式,您可以批量抓取数据并保存为结构化的 CSV 文件。