所以,我正在试图弄清楚如何刮取目录网站以获取某些信息,而我在将两组get_elements组合成可写CSV文件时遇到了麻烦。我有两个信息列表company_links_elements
和company_address_elements
。最后,我想要做的是将以下信息打印到CSV。问题是我不知道如何一起运行两个for loops
或zip the arrays
。您能否帮我弄清楚如何获取包含以下三行的CSV:company_name
,company_url
和company_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的附加列。
答案 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")
在每次迭代company
和address
将是列表中相应的元素,在同一索引处。当较短的列表用尽时将停止。受益于枚举 - 如果列表中的一个比另一个短,则不会命中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,
)