您好我有以下代码:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://groceries.asda.com/asda-webstore/landing/home.shtml?cmpid=ahc--ghs-d1--asdacom-dsk-_-hp#/shelf/1215337195041/1/so_false')
products = []
div = driver.find_element_by_id('listings')
product_title = driver.find_elements_by_xpath('//div[@id="listings"]//a[@title]')
product_price = driver.find_elements_by_xpath('//div[@id="listings"]//span[@class="price"]/span')
product_wasprice = driver.find_elements_by_xpath('//strike[@class="wasprice"]')
product_weight = driver.find_elements_by_xpath('//p[@class="subTitle"]')
products = [product_title, product_weight, product_wasprice, product_weight]
for item in product_title:
print item.text.strip()
driver.close()
目前,它打印出product_title
中出现的所有项目。
我想使用我定义为products
的数组,以便我可以创建一个输出csv文件,其中所有值都通过products
迭代。
所以目前我的输出看起来像是:
product1,
product2,
etc...
我希望:
product_title1, product_weight1, product_wasprice1, product_weight1
product_title2, product_weight2, product_wasprice2, product_weight2
我想它只是知道如何定义遍历所有数组元素的for循环。
提前致谢!
答案 0 :(得分:0)
您似乎在寻找zip
function或更高效的堂兄itertools.izip
。这些组合可迭代,以便您可以同时循环它们。
from itertools import izip
products = izip(product_title, product_price, product_wasprice, product_weight)
for row in products:
print ", ".join(item.text.strip() for item in row)
使用上面的示例,每个row
将是一个元组,其中包含传递到zip
的每个列表中的一个元素。如果您需要使用此数据进行进一步计算,还可以使用for
中的逗号分隔变量扩展这些元组。
for title, price, wasprice, weight in products:
pass # your code here