You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Excel读写与网页搜索数据追加存储问题求助

解决方案

一、读取输入Excel(姓名、职业列表)

推荐用pandas库,操作简单易上手,先安装依赖:

pip install pandas openpyxl

读取Excel的代码示例:

import pandas as pd

# 读取输入Excel文件,假设文件名为input.xlsx,包含"姓名"和"职业"两列
df_input = pd.read_excel("input.xlsx", usecols=["姓名", "职业"])

# 将数据转换成可迭代的列表,方便后续循环搜索
search_list = df_input.to_dict("records")
# 此时search_list是一个字典列表,每个元素是{"姓名": "XXX", "职业": "XXX"}

如果你的Excel没有表头,可指定header=None,再手动指定列名:

df_input = pd.read_excel("input.xlsx", header=None, names=["姓名", "职业"])

二、实现Excel数据追加

xlsxwriter本身不支持直接向已有Excel文件追加数据,这里提供两种适合新手的方案:

方案1:用pandas合并旧数据+新数据后写入

这种方法逻辑简单,适合数据量不大的场景:

import pandas as pd

# 假设你爬取到的新数据是一个字典列表,比如:
new_data = [
    {"姓名": "张三", "职业": "程序员", "爬取结果1": "XXX", "爬取结果2": "XXX"},
    {"姓名": "李四", "职业": "设计师", "爬取结果1": "YYY", "爬取结果2": "YYY"}
]
df_new = pd.DataFrame(new_data)

try:
    # 尝试读取已有结果文件
    df_old = pd.read_excel("result.xlsx")
    # 合并旧数据和新数据
    df_total = pd.concat([df_old, df_new], ignore_index=True)
except FileNotFoundError:
    # 如果文件不存在,直接用新数据
    df_total = df_new

# 将合并后的数据写入Excel
df_total.to_excel("result.xlsx", index=False)

方案2:用openpyxl直接追加数据到已有文件

如果不想每次都读取全部旧数据,可使用openpyxl操作已有Excel的工作表:

from openpyxl import load_workbook
import pandas as pd

# 新数据转DataFrame
new_data = [
    {"姓名": "张三", "职业": "程序员", "爬取结果1": "XXX", "爬取结果2": "XXX"}
]
df_new = pd.DataFrame(new_data)

try:
    # 加载已有工作簿
    book = load_workbook("result.xlsx")
    sheet = book.active
    # 获取已有数据的最后一行,新数据从下一行开始写入
    start_row = sheet.max_row + 1
    # 将新数据逐行写入
    for index, row in df_new.iterrows():
        for col_num, value in enumerate(row.values, 1):
            sheet.cell(row=start_row + index, column=col_num, value=value)
    book.save("result.xlsx")
except FileNotFoundError:
    # 文件不存在时直接创建新文件
    df_new.to_excel("result.xlsx", index=False)

三、结合Selenium的完整流程示例

把读取输入、爬取、写入整合起来:

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 1. 读取输入Excel
df_input = pd.read_excel("input.xlsx", usecols=["姓名", "职业"])
search_list = df_input.to_dict("records")

# 2. 初始化Selenium浏览器
driver = webdriver.Chrome()
driver.implicitly_wait(10)

# 3. 循环爬取数据
result_list = []
for item in search_list:
    name = item["姓名"]
    job = item["职业"]
    # 这里替换成你的搜索逻辑,比如打开搜索页面,输入关键词
    driver.get("https://example.com/search")
    # 假设搜索框的id是"search-input"
    search_box = driver.find_element(By.ID, "search-input")
    search_box.send_keys(f"{name} {job}")
    search_box.submit()
    time.sleep(2)
    
    # 这里替换成你的数据提取逻辑,比如提取结果文本
    try:
        result_text = driver.find_element(By.CLASS_NAME, "result-content").text
    except:
        result_text = "无结果"
    
    # 将爬取结果加入列表
    result_list.append({
        "姓名": name,
        "职业": job,
        "爬取结果": result_text
    })

# 4. 关闭浏览器
driver.quit()

# 5. 将结果写入/追加到Excel
df_result = pd.DataFrame(result_list)
try:
    df_old = pd.read_excel("result.xlsx")
    df_total = pd.concat([df_old, df_result], ignore_index=True)
except FileNotFoundError:
    df_total = df_result

df_total.to_excel("result.xlsx", index=False)

内容的提问来源于stack exchange,提问作者sadsapien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:10:26