Python到CSV或Excel导出多个数据

时间:2015-06-10 15:17:27

标签: python excel csv

嘿伙计们我尝试将数据写入csv文件/ excel。

问题在于Excel文件我不能让它工作,而csv它只显示我"元素div在xx.xxx.xx"我不会逐行说明产品和价格将填入正确的匹配。 Excel首选。大约1000件产品将被报废。

测试代码是否有效的标准代码:

from lxml import html
import requests


urls = ['http://whiskey.de/shop/Aktuell/']

for url in urls:
    for number in range(1, 15):
        page_url = url + str(number) if number > 1 else url
        page = requests.get(page_url)

        tree = html.fromstring(page.text)

        prices = tree.cssselect('div#content div.price')
        names = tree.cssselect('div#content div.title a')

        print 'Whiskey Preis: ', [price.text for price in prices]
        print 'Whiskey Names: ', [name.text for name in names]

CSV经过测试:

from lxml import html
import requests
import csv



urls = ['http://whiskey.de/shop/Schottland/']

for url in urls:
    for number in range(1, 10):
        page_url = url + str(number) if number > 1 else url
        page = requests.get(page_url)

        tree = html.fromstring(page.text)

        prices = tree.cssselect('div#content div.price')
        names = tree.cssselect('div#content div.title a')

with open('whiskey_test.csv', 'w') as csvfile:
    fieldnames = ['Preise', 'Namen']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'Preise': prices, 'Namen': names})

1 个答案:

答案 0 :(得分:0)

这里有几个问题。

获取标签(div)文本而不是仅仅编写标签elemnt本身

在您的“标准代码”中,您可以通过在所选元素上调用.text来“正确”执行此操作。

print 'Whiskey Preis: ', [price.text for price in prices]
print 'Whiskey Names: ', [name.text for name in names]

在这里

writer.writerow({'Preise': prices, 'Namen': names})

你将树元素本身写入了fuile。所以相反,这将是

writer.writerow({'Preise': prices.text, 'Namen': names.text})

...然而

不写几行

假设您有一个包含价格/名称对的数据结构(如元组或字典列表),您可以迭代它在DictWriter中写一个新行,如下所示:

for price, name in in productdictionary.items():
    writer.writerow({'Preis': price.text, 'Name': name.text})

创建将价格映射到名称的正确数据结构

现在,我不认为我们应该为你做所有的刮擦工作:)但基本上你想用你的树来获取相应的价格和名称元素对。一旦你得到那些你将它们转储到字典或元组列表中。 一旦你得到它,你只需迭代它来编写你的csv,如上所示。