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

Python Pandas如何将爬取获取的URL数据存入空DataFrame

问题原因
  1. 存储逻辑写在for循环外部,循环结束后urls变量仅保留最后一次遍历得到的单个URL,最终生成的DataFrame只会有1条数据
  2. append方法不会修改原DataFrame,你将返回值赋值给了新变量df_test,原本初始化的df1始终为空,多次执行还会覆盖之前的存储结果
  3. 目前pandas 2.0+版本已正式废弃append方法,继续使用还会触发版本兼容警告
最优解决方案

先把所有爬取到的URL存入列表,再一次性转换为DataFrame,该方案比循环append执行效率高得多,修改后的完整代码如下:

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

url_list = []
url = 'https://www.welcometothejungle.com/fr/jobs?page=1&refinementList%5Bprofession_name.fr.Tech%5D%5B%5D=Data%20Science'
path = '/Users/jdkj/desktop/chromedriver 3'
options = webdriver.ChromeOptions()
# 原参数chrome_options已过时,替换为标准参数options
driver = webdriver.Chrome(path, options=options)
driver.get(url)
time.sleep(3)
# 原xpath冗余条件已移除,find_elements_by_xpath已过时,替换为新标准写法
elems = driver.find_elements(By.XPATH, "//article/div[2]/header/a")

for elem in elems:
    urls = elem.get_attribute("href")
    print(urls)
    # 把每个url存入列表
    url_list.append(urls)

# 列表一次性转DataFrame
df1 = pd.DataFrame(url_list, columns=['URLS'])
print(df1.head())
兼容旧版本pandas的循环写法(不推荐)

如果你坚持要使用append方法实现,只需要把存储逻辑移到for循环内部,且赋值给原DataFrame变量即可:

df1 = pd.DataFrame()
for elem in elems:
    urls = elem.get_attribute("href")
    print(urls)
    # 存储逻辑放在循环内,更新原df1变量
    df1 = df1.append({'URLS' : urls}, ignore_index = True)

df1.head()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:15:04