使用selenium将多个for循环组合成CSV

时间:2018-05-19 03:52:12

标签: python list csv selenium xpath

所以,我正在试图弄清楚如何刮取目录网站以获取某些信息,而我在将两组get_elements组合成可写CSV文件时遇到了麻烦。我有两个信息列表company_links_elementscompany_address_elements。最后,我想要做的是将以下信息打印到CSV。问题是我不知道如何一起运行两个for loopszip the arrays。您能否帮我弄清楚如何获取包含以下三行的CSV:company_namecompany_urlcompany_address

company_links_elements = driver.find_elements(By.XPATH, "//h3[@class='jss320 
jss324 jss337 sc-gzOgki eucExu']/a")
company_address_elements = driver.find_elements(By.XPATH, "//strong[@class='dtm-search-listing-address']")

with open('links.csv', 'w') as file:
    writer = csv.writer(file)
    for company in company_links_elements:
        company_url = company.get_attribute("href")
        company_name = company.get_attribute("text")
        # NEED COMPANY ADDRESS HERE
        writer.writerow((company_name, company_url))

driver.close()

注意company_address_elements ...我不知道如何将其包含到csv.writer中以编写company_address的附加列。

2 个答案:

答案 0 :(得分:2)

这是zip version

for company, address in zip(company_links_elements, company_address_elements):
    company_url = company.get_attribute("href")
    company_name = company.get_attribute("text")
    company_address = address. get_attribute("text")

在每次迭代companyaddress将是列表中相应的元素,在同一索引处。当较短的列表用尽时将停止。受益于枚举 - 如果列表中的一个比另一个短,则不会命中IndexError;否定 - 您手边没有当前的索引(但是您仍然不使用它:)。

答案 1 :(得分:1)

array (
  'first_name' => NULL,
  'last_name' => NULL,
  'years' => NULL,
)array (
  'last_name' => 'doe',
  'Hackers' => 'can be naughty',
  'years' => 5,
)array (
  'last_name' => 'doe',
  'years' => 5,
)array (
  'first_name' => NULL,
  'last_name' => 'doe',
  'years' => 5,
)