Python выполняет итерацию webelements и добавляет в DF

#python #pandas #selenium #dictionary

#python #pandas #selenium #словарь

Вопрос:

Я пытаюсь выполнить итерацию по веб-элементам на веб-сайте, чтобы создать фрейм данных с элементами с /stron& в качестве моих ключей и элементами без /stron& в качестве моих значений.

Как я могу выполнить итерацию по элементам, чтобы создать этот dict?

Веб-сайт: https://ticker11.com.br/emissoes /

Элементы:

 First Key: //*[@id="tablepress-6"]/tbody/tr[2]/td/span[1]/stron&
First Value: //*[@id="tablepress-6"]/tbody/tr[2]/td/span[2]/span

Second Key: //*[@id="tablepress-6"]/tbody/tr[2]/td/span[3]/stron&
Second Value: //*[@id="tablepress-6"]/tbody/tr[2]/td/span[4]/span
  

С помощью приведенного ниже кода я сгребаю все //*[@id="tablepress-6"]/tbody/tr[2]/td/span в список, но это не то, что я хочу.

 from selenium import webdriver
import pandas as pd

driver.implicitly_wait(30)

Fiis_Link = "https://ticker11.com.br/emissoes/"

driver.&et(Fiis_Link)

xyz = []

for row in driver.find_elements_by_class_name('row-details-open'):
    row.click()
    for x in driver.find_elements_by_xpath('//*[@id="tablepress-6"]/tbody/tr[2]/td/span'):
        xyz.append(x.text)
        print(xyz)
  

вывод — это список всех элементов, которые мне нужны, но не организованы так, как я хочу, чтобы DF был:

 ['Proporção de Sobras:', 'Não há', 'Liquidação dos Direitos:', 'Não há', 'Liquidação das Sobras:', 'Não há', 'Liquidação das Reservas:', '02.09.20', 'Data de Encerramento:', '08.09.20', 'Emissão:', '1ª', 'Oferta:', 'ICVM 400 (Oferta Pública)', 'Investimento Mínimo:', 'R$ 1.000,00 (100 cotas)', 'Captação Mínima:', 'Não há', 'Captação Máxima:', 'R$ 576.000.000,00', 'Coordenador Líder:', 'Banco J. Safra', 'Alocação/Rateio:', 'Proporcional', 'Documentação Oficial:', 'Prospecto Preliminar, Aviso ao Mercado', 'Observações:', '¹ Só é possível fazer pedidos múltiplos de 100.', 'Proporção de Sobras:' .......
  

Комментарии:

1. Можете ли вы также опубликовать пример вывода?

2. Просто отредактировано с выводом, который у меня есть в текущем файле.

Ответ №1:

На вашем месте я бы сохранил ваши различные элементы в 4 списках (например, я бы создал их в вашем цикле for):

  • first_key
  • first_value
  • second_key
  • second_value

А затем фактически создает фрейм данных :

 dictionnary = {
   'first_key': first_key, 
   'first_value':first_value, 
   'second_key':second_key, 
   'second_value':second_value
}
xyz = pd.DataFrame(data=dictionnary) 
  

Комментарии:

1. Это не решение, потому что количество ключевых элементов неизвестно, я не могу просто сопоставить ключи, потому что новый ключ может появиться завтра.