嘿伙计们我尝试将数据写入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})
答案 0 :(得分:0)
这里有几个问题。
在您的“标准代码”中,您可以通过在所选元素上调用.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,如上所示。