【发布时间】:2019-10-08 22:19:23
【问题描述】:
我知道以前曾发布过类似的问题,但我还没有找到适合这种情况的东西。我希望你能帮忙。
这里是问题的摘要:
- 我正在使用 selenium 编写网络抓取代码(用于分配目的)
- 代码利用 for 循环从一个页面转到另一个页面
- 代码的输出是来自每个页码的数据框,该页码被导入到 excel 中。 (基本上是一张桌子)
- 所有网页的数据框只能在一张 Excel 表格中捕获。(Excel 文件中不是多张表格)
- 每个网页都具有相同的数据格式(即列数和列标题相同,但行值不同..)
- 关于信息,我正在使用 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