我试图让网络刮掉数据并排而不是在Excel中端打印垂直

时间:2019-01-29 20:21:44

标签: python excel

我已经从一个网页上抓取了2个数据集,并将其导入到xls文件中。 \ n允许我重新运行程序并在旧数据下打印数据,但是我想在旧数据旁边的列中打印新数据。

它粘贴如下:

旧数据 (新行) 新数据

我想它粘贴这样的:

旧数据(新的列)中的新数据

我同时使用\吨和\ n的我的当前代码格式已经尝试。我不确定我的安排是否错误或是否有其他\ command。

def main():
    import csv
    import os
    from selenium import webdriver

    ticker = input("Enter your ticker: ")
    url = "http://financials.morningstar.com/cash-flow/cf.html?t=" + ticker.upper()
    print(url)

    browser = webdriver.Firefox()
    browser.get(url)

    values_elementticker = browser.find_elements_by_xpath("//span[@class='gry']")
    values2 = values = [x.text for x in values_elementticker]
    print(values2[0])

    values_element = browser.find_elements_by_xpath("//div[@id='data_i97']")
    values = [x.text for x in values_element]
    print("Cash Flows:")
    print(values[0])



    with open("results.xls", "a") as f:
        for i in range(len(values2)):
            f.write(values2[0] + "\n")
        for i in range(len(values)):
            f.write(values[0] + "\n")

    browser.close()
    restart = input("Do you wish to start again?").lower()
    if restart == "yes":
        main()

    else:
        exit()
main()

它当前打印如下

IBM

13,345

12,685

12,857

12,808

12,951

12,741

 ABB

2,547

2,819

2,942

3,012

2,850

1,923

我希望它在excel中这样打印

  IBM     |   ABB

13,345   |   2,547

12,685   |   2,819

12,857   |   2,942

12,808   |  3,012

12,951   |   2,850

12,741   |   1,923

1 个答案:

答案 0 :(得分:2)

我不确定这是否可以在您给定的上下文中使用,但是读写.csv文件会更容易,更快捷。 .xls文件设计为可使用Excel(或类似文件)打开,并且包含格式,图纸和其他多维数据,这使得它们使用起来相当复杂。

由于.csv使用逗号分隔列,因此它们通常易于读写。到最后,您仍然可以使用电子表格软件打开.csv,因此它仍然可以作为功能解决方案。

我的建议:

with open("results.csv", "a") as f:
    for x,y in zip(values2,values1):
        line = "%s,%s\n" % (x,y)
        f.write(line)

如果您真的坚持要写入xls文件,那么最好按照Kamal的评论中的建议,使用专门用于该目的的模块。