#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. Это не решение, потому что количество ключевых элементов неизвестно, я не могу просто сопоставить ключи, потому что новый ключ может появиться завтра.