Как мне получить биржевой символ Selenium? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь получить символ акции с этой страницы .

Это мой код:

from selenium import webdriver
import pandas as pd

url = 'https://stock360.hkej.com/StockScreener/profession/tab/profile' 

browser = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe')
browser.get(url)

dfs = pd.read_html(browser.page_source)   
print(dfs)

browser.close()

Это вывод:

dfs

[                     0
 0  加入至心水組合:請先登入或註冊成為會員, Empty DataFrame
 Columns: [沒有符合以上篩選條件的股票。]
 Index: [],                      0
 0  加入至心水組合:請先登入或註冊成為會員]

Я знаю, что это javascript, и я уже использовал Selenium.Почему я не могу получить стол?И как я могу получить символ акций на странице, как показано ниже?Спасибо.

enter image description here

Дополнительная информация: После нажатия на ссылку выберите 2-й в раскрывающемся списке ЗЕЛЕНЫЙ, после чего отобразится приведенная выше таблица.

enter image description here

1 Ответ

1 голос
/ 15 апреля 2019

Один из способов выглядит следующим образом

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

url = 'https://stock360.hkej.com/StockScreener/profession/tab/profile'
driver = webdriver.Chrome()
driver.get(url)
WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'option')))
# select the second dropdown option by its value attribute whose value is mb
driver.find_element_by_css_selector('[value=mb]').click()
#wait for blue button to be clickable and click
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[href*=submit]'))).click()
#select table
table = driver.find_element_by_css_selector('.dt960')
#transfer html of table to pandas read_html which handles tables
df = pd.read_html(table.get_attribute('outerHTML'))[0] #grab the table
df2 = df.drop(df.columns[0], axis=1).dropna(how='all') #lose the nan column and rows
df2.rename(columns=df.iloc[0], inplace = True) #set headers same as row 1
df2.drop(df.index[0], inplace = True)  #lose row 1
df2.reset_index(drop=True) #re-index
print(df2)
driver.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...