如何将我抓取的数据从列表导出到我的 csv 文件?
How can I export my scraped data from a list to my csv file?
我似乎无法将我的数据正确导出到单个变量中,无法将此变量导出到 csv 文件中。我做错了什么?
我试过了:
csvFile = open('products.csv', 'w')
writer = csv.writer(csvFile)
writer.writerow(('name', 'price'))
url = 'https://www.ah.nl/producten/aardappel-groente-fruit/groente/merk=AH'
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(100)
def itemGrabber(url):
items = driver.find_elements_by_class_name('product')
print(str(len(items)) + " items found on page.")
item = []
for i in items:
## name of product
t = i.find_element_by_class_name('product-description__title').text.replace("\xad", "")
## price
p = i.find_element_by_class_name('product-price').text
item.append(t)
item.append(p)
print(item)
return item
products = itemGrabber(url)
writer.writerow(products)
csvFile.close()
csv 中的结果是:
name,price
yoghurt,1.0,banana,2.0,kinkytoy,6.99
而且我希望它被正确分类。我尝试将 t 和 p 转换为列表并将它们添加到变量 'item',但这更糟。你能告诉我如何让它变得更好吗?感谢您的耐心等待。
您可以使用更高级的库(例如 pandas)更有效地完成此操作。
但您真正缺少的是一种告诉您的 csvwriter 换行符在哪里并且您将整个数组写成一行的方法。
考虑改变
item.append(t)
item.append(p)
到
item.append([t,p])
然后更改您的作者代码writer.writerow(products)
for product in products:
writer.writerow(product)
您可以直接将其作为一行写入 csv,而不是使用集合。
def itemGrabber(url):
items = driver.find_elements_by_class_name('product')
print(str(len(items)) + " items found on page.")
for i in items:
## name of product
t = i.find_element_by_class_name('product-description__title').text.replace("\xad", "")
## price
p = i.find_element_by_class_name('product-price').text
writer.writerow((t, p))
products = itemGrabber(url)
我似乎无法将我的数据正确导出到单个变量中,无法将此变量导出到 csv 文件中。我做错了什么?
我试过了:
csvFile = open('products.csv', 'w')
writer = csv.writer(csvFile)
writer.writerow(('name', 'price'))
url = 'https://www.ah.nl/producten/aardappel-groente-fruit/groente/merk=AH'
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(100)
def itemGrabber(url):
items = driver.find_elements_by_class_name('product')
print(str(len(items)) + " items found on page.")
item = []
for i in items:
## name of product
t = i.find_element_by_class_name('product-description__title').text.replace("\xad", "")
## price
p = i.find_element_by_class_name('product-price').text
item.append(t)
item.append(p)
print(item)
return item
products = itemGrabber(url)
writer.writerow(products)
csvFile.close()
csv 中的结果是:
name,price
yoghurt,1.0,banana,2.0,kinkytoy,6.99
而且我希望它被正确分类。我尝试将 t 和 p 转换为列表并将它们添加到变量 'item',但这更糟。你能告诉我如何让它变得更好吗?感谢您的耐心等待。
您可以使用更高级的库(例如 pandas)更有效地完成此操作。
但您真正缺少的是一种告诉您的 csvwriter 换行符在哪里并且您将整个数组写成一行的方法。
考虑改变
item.append(t)
item.append(p)
到
item.append([t,p])
然后更改您的作者代码writer.writerow(products)
for product in products:
writer.writerow(product)
您可以直接将其作为一行写入 csv,而不是使用集合。
def itemGrabber(url):
items = driver.find_elements_by_class_name('product')
print(str(len(items)) + " items found on page.")
for i in items:
## name of product
t = i.find_element_by_class_name('product-description__title').text.replace("\xad", "")
## price
p = i.find_element_by_class_name('product-price').text
writer.writerow((t, p))
products = itemGrabber(url)