【问题标题】:How to write to an existing excel file without over-writing existing data using pandas如何在不使用熊猫覆盖现有数据的情况下写入现有的 excel 文件
【发布时间】:2019-10-08 22:19:23
【问题描述】:

我知道以前曾发布过类似的问题,但我还没有找到适合这种情况的东西。我希望你能帮忙。

这里是问题的摘要:

  1. 我正在使用 selenium 编写网络抓取代码(用于分配目的)
  2. 代码利用 for 循环从一个页面转到另一个页面
  3. 代码的输出是来自每个页码的数据框,该页码被导入到 excel 中。 (基本上是一张桌子)
  4. 所有网页的数据框只能在一张 Excel 表格中捕获。(Excel 文件中不是多张表格)
  5. 每个网页都具有相同的数据格式(即列数和列标题相同,但行值不同..)
  6. 关于信息,我正在使用 pandas,因为它有助于将网站的输出转换为 excel

我面临的问题是,当数据框导出到 excel 时,它会覆盖上一次迭代中的数据。因此,当我运行代码并完成抓取时,我只会从最后一次 for 循环迭代中获取数据。

请告知我需要添加的编码行,以便在 excel 表中捕获所有迭代,换句话说,更具体地说,每次迭代应该从第一个空开始将数据导出到 excel排。

以下是代码摘录:

for i in range(50, 60):  
    url= (urlA + str(i)) #this is the url generator, URLA is the main link excluding pagination

    driver.get(url)

    time.sleep(random.randint(3,7))

    text=driver.find_element_by_xpath('/html/body/pre').text

    data=pd.DataFrame(eval(text))

    export_excel = data.to_excel(xlpath)

【问题讨论】:

  • for-loop 之前只创建一个数据帧,在for-loop 内部将数据附加到这个数据帧并在for-loop 之后只保存一次。

标签: python excel pandas selenium


【解决方案1】:

感谢迪克格拉夫。你的提议成功了。

这是其他人的完整代码(供将来参考)。

为字体道歉,无法正确设置。无论如何,希望下面的内容对将来的某些人有用。

xlpath= "c:/projects/excelfile.xlsx"

df=pd.DataFrame() #creating a data frame before the for loop. (dataframe is empty before the for loop starts)

Url= www.your website.com 

for i in irange(1,10): 

       url= (urlA + str(i)) #this is url generator for pagination (to loop thru the page) 

       driver.get(url)  

       text=driver.find_element_by_xpath('/html/body/pre').text # gets text from site

       data=pd.DataFrame(eval(text)) #evalues the extracted text from site and converts to Pandas dataframe 

       df=df.append(data) #appends the dataframe (df) specificed before the for-loop and adds the new (data)

export_excel = df.to_excel(xlpath)  #exports consolidated dataframes (df) to excel

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多