Объединение нескольких циклов for в CSV с селеном - PullRequest
0 голосов
/ 19 мая 2018

Итак, я пытаюсь выяснить, как почистить сайт каталога для получения некоторой информации, и у меня возникают проблемы при объединении двух наборов 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, чтобы написать дополнительный столбец для адреса компании.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вот версия zip :

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, если один из списков короче другого;отрицательный - у вас нет текущего индекса под рукой (но вы все равно его не используете:).

0 голосов
/ 19 мая 2018
for idx, company in enumerate(company_links_elements):
        company_url = company.get_attribute("href")
        company_name = company.get_attribute("text")
        address = company_address_elements[idx].get_attribute(...)
        writer.writerow((company_name, company_url))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...