我正在使用 Selenium 从网页的 HTML 正文中提取数据,并使用 pandas 将数据写入 .csv 文件。
数据被提取并写入文件,但是我想操纵数据的格式以写入指定的列,在阅读了许多线程和文档后,我无法理解如何执行此操作。
当前CSV文件输出如下,所有数据在一行或一列
0,
B09KBFH6HM,
dropdownAvailable,
90,
1,
B09KBNJ4F1,
dropdownAvailable,
100,
2,
B09KBPFPCL,
dropdownAvailable,
110
或者如果我使用 [count] count +=1 方法,它将是一行
0,B09KBFH6HM,dropdown可用,90,1,B09KBNJ4F1,dropdown可用,100,2,B09KBFPFPCL,dropdown可用,110
我希望输出的格式如下,
/col1 /col2 /col3 /col4
0, B09KBFH6HM, dropdownAvailable, 90,
1, B09KBNJ4F1, dropdownAvailable, 100,
2, B09KBPFPCL, dropdownAvailable, 110
我尝试使用 columns= options 但在终端中出现错误,并且不明白我应该使用什么功能来在附加详细信息下的文档中实现此目的
简化版本如下
from selenium import webdriver
import pandas as pd
price = []
driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.example.co.jp/dp/zzzzzzzzzz/")
select_box = driver.find_element_by_name("dropdown_selected_size_name")
options = [x for x in select_box.find_elements_by_tag_name("option")]
for element in options:
price.append(element.get_attribute("value"))
price.append(element.get_attribute("class"))
price.append(element.get_attribute("data-a-html-content"))
output = pd.DataFrame(price)
output.to_csv("Data.csv", encoding='utf-8-sig')
driver.close()
我需要单独解析每个项目并附加吗? 我希望将每个 .get_attribute 值写入新列。
您是否可以提供任何建议来解决此问题,因为我对 pandas 不太精通,谢谢您的帮助
最佳答案
方法类似于@user17242583,但更短一些:
data = [[e.get_attribute("value"), e.get_attribute("class"), e.get_attribute("data-a-html-content")] for e in options]
df = pd.DataFrame(data, columns=['ASIN', 'dropdownAvailable', 'size']) # third column maybe is the product size
df.to_csv("Data.csv", encoding='utf-8-sig')
关于python - Pandas DF.output 写入列(当前数据全部写入一行或一列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70131810/