Python for循环简单数组

时间:2014-08-25 13:13:25

标签: python arrays loops xpath selenium-webdriver

您好我有以下代码:

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循环。

提前致谢!

1 个答案:

答案 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