更新 - 我通过向数据框添加行然后只将数据框写入 Excel 一次来解决以下问题。其他读者可能会发现向 pandas DataFrame 添加一行很有帮助。
更新 2 - 如果您想停止将标题名称写入 Excel,那么您可能会找到此帮助How do you remove the column name row from a pandas DataFrame? .
更新 3 - 如果您想在将数据框写入 Excel 时删除行号,那么您可能会发现此链接很有帮助。有没有办法从 DataFrame.from_dict 中删除列号和行号?.
我希望 Python 从一个 Excel 文件 (python.xlsx) 中读取 Amazon URL 列表,然后使用 URL、产品标题和产品价格填充另一个 Excel 文件 (python2.xlsx)。我不想为每个产品创建一个新的 Excel 表。我不希望在将新数据写入 sheet1 时覆盖现有数据。而且我也不需要 to_excel 命令将标题名称和行号写入 Excel。
我查看了如何在不覆盖数据的情况下写入现有的 excel 文件(使用熊猫)?但无法将其应用于我的问题。
有没有办法停止将标题名称和行号写入 Excel?有没有办法阻止现有文本在电子表格中被覆盖?
Row = 0
MaxRow = len(df)
while Row <= MaxRow:
URL = (df.iloc[Row,0])
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find(id="productTitle").get_text()
price = soup.find(id="priceblock_ourprice").get_text()
converted_price=float(price[1:6])
df2 = pd.DataFrame({'Url':[URL],
'Title':[title.strip()],
'Price':[converted_price]})
writer = ExcelWriter(r'C:\Users\HP\Documents\python2.xlsx')
df2.to_excel(writer, sheet_name='Sheet1', startrow=Row,startcol=2)
writer.save()
Row = Row + 1
if Row == MaxRow:
break