Как добавить списки из атрибута Selenium get? - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в программировании и наконец-то получил нужные данные с веб-сайта. Проблема здесь в том, что я не могу понять, как поместить их в один DataFrame. Я не могу объединить, потому что они не присвоены переменной, они просто поступают из парсера.

Вот код:

import pandas as pd
import numpy as np
import requests
from csv import writer


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys



chrome_options = Options()  
chrome_options.add_argument("--headless")  
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://app.hedgeye.com/feed_items/all?page=1&with_category=33-risk-ranges")

#login
import requests
import sys

url = 'https://accounts.hedgeye.com/users/sign_in'
driver.get(url)

username = driver.find_element_by_id("user_email")
password = driver.find_element_by_id("user_password")

username.send_keys("")
password.send_keys("")

driver.find_element_by_name("commit").click()
#end login

for tr in driver.find_elements_by_tag_name("tr"):


        data = tr.get_attribute("innerText")
        data2= data.split()[-3:]

        #makes the list rows not columns
        df = pd.DataFrame(np.array(data2).reshape(-1,len(data2)))
        print (df)  

driver.quit()

Вот как выглядит фрейм данных :

Here's what the dataframe looks like

Вот как выглядит парсер до того, как я помещаю его в фрейм данных, и как выглядит веб-страница :

Final df

Конечный продукт

1 Ответ

0 голосов
/ 30 мая 2020

Попробуйте сначала инициализировать df вне l oop. Затем df может быть изменен с каждой итерацией с помощью pd.concat.

Итак, вне for l oop у вас будет что-то вроде:

df = DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

затем после переменной data2 присвоение:

df = pd.concat([df, DataFrame(data=data2.reshape(-1,len(data2)))])
...