如何在不使用Pandas覆盖现有数据的情况下写入现有excel文件

时间:2019-10-08 22:19:23

标签: python excel pandas selenium

我知道之前也曾发布过类似的问题,但是我还没有找到解决此问题的方法。希望您能提供帮助。

以下是问题的摘要:

  1. 我正在使用硒编写网络抓取代码(用于分配目的)
  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)

1 个答案:

答案 0 :(得分:1)

感谢Dijkgraaf。您的建议有效。

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

抱歉,无法正确设置字体。无论如何,下面的希望对将来的人有所帮助。

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