更新-通过将行添加到数据框,然后仅将数据框写入Excel一次,我解决了以下问题。其他读者可能会发现Add one row to pandas DataFrame有用。
更新2-如果要停止将标题名称写入Excel,则可以找到此帮助How do you remove the column name row from a pandas DataFrame?。
更新3-如果您想在将数据框写入Excel时删除行号,那么您可能会发现此链接很有用Is there any way to remove column and rows numbers from DataFrame.from_dict?。
我希望Python从一个Excel文件(python.xlsx)中读取Amazon URL列表,然后使用URL,产品标题和产品价格填充另一个Excel文件(python2.xlsx)。我不想为每个产品创建一个新的Excel工作表。我不希望将新数据写入sheet1时覆盖现有数据。而且我也不需要to_excel命令将标头名称和行号写入Excel。
我查看了How to write to an existing excel file without overwriting data (using pandas)?,但无法将其应用于我的问题。
有没有一种方法可以停止将标题名称和行号写入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