我刚刚开始学习Python,并使用xlwings写入Excel电子表格。我对编码真的很陌生(这是我的第一个问题),所以这可能是一个简单的问题,但任何意见都会非常感谢。在excel中使用xlwings,这两种方法哪一种最快/首选?
我读了一个网站(使用硒和美丽的汤),以获得有关产品的几件,如价格和重量的页面的源代码。然后,我将这些值写入Excel中的单元格。
我有这样的两种方法 - 第一个运行的函数,然后移动到下一个函数之前的值写入到Excel:
(这些是主要的脚本摘录 - 左右逢源工作确定)
while rowNum < lastRow + 1:
urlCellRef = (rowNum, colNum)
url = wb.sheets[0].range(urlCellRef).value
# Parse HTML with beautiful soup
getPageSource()
# Find a product price field value within HTML
getProductPrice()
itemPriceRef = (rowNum, colNum + 1)
# Write price value back to Excel sheet
wb.sheets[0].range(itemPriceRef).value = productPrice
getProductWeight()
itemWeightRef = (rowNum, colNum + 2)
wb.sheets[0].range(itemWeightRef).value = productWeight
getProductQuantity()
itemQuantityRef = (rowNum, colNum + 4)
wb.sheets[0].range(itemQuantityRef).value = productQuantity
getProductCode()
prodCodeRef = (rowNum, colNum + 6)
wb.sheets[0].range(prodCodeRef).value = productCode
rowNum = rowNum + 1
第二运行所有的功能,然后将写入每个所存储的值的一气呵成练成:
while rowNum < lastRow + 1:
urlCellRef = (rowNum, colNum)
url = wb.sheets[0].range(urlCellRef).value
getPageSource()
getProductPrice()
getProductWeight()
getProductQuantity()
getProductCode()
itemPriceRef = (rowNum, colNum + 1)
wb.sheets[0].range(itemPriceRef).value = productPrice
itemWeightRef = (rowNum, colNum + 2)
wb.sheets[0].range(itemWeightRef).value = productWeight
itemQuantityRef = (rowNum, colNum + 4)
wb.sheets[0].range(itemQuantityRef).value = productQuantity
prodCodeRef = (rowNum, colNum + 6)
wb.sheets[0].range(prodCodeRef).value = productCode
rowNum = rowNum + 1
我在想,这是做这个的首选方法吗?我没有注意到很多速度差异,但我的笔记本电脑很慢,所以如果一种方法被认为是最佳做法,那么我宁愿去那样做,因为我会增加将被使用的URL的数量。
非常感谢您的帮助!
嗨 - 感谢您的建议!我现在只是在学习列表,所以我将重新排列所有内容,以便最后写入excel时使用单个列表写入一个范围,而不是像现在这样依次写入每个单元格。我需要做一些关于NumPy和Panda的作业,因为我已经看到他们提到过,但还没有使用它们。再次感谢理查德。 – QBG