Python Selenium не обновляет html после выполнения Javascript - PullRequest
0 голосов
/ 03 сентября 2018

Я тестирую код ниже, чтобы очистить некоторые данные опций с Marketchameleon.com. Исходная таблица отсортирована по ATM IV% Change, однако мне бы хотелось отсортировать ее по столбцу Implied Straddle Premium. Поскольку это не кнопка для нажатия, я думаю о (после проверки источника HTML) сделать это следующим образом:

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup as BSoup
browser = webdriver.PhantomJS()
browser.get("https://marketchameleon.com/Screeners/Options")    
bs_obj = BSoup(browser.page_source, 'html.parser').encode("utf-8")
with open("Market_Chameleon_Unsorted.html", "w") as file:
    file.write(str(bs_obj))
element = browser.find_element_by_xpath("//th[@aria-label='Implied StraddlePremium %: activate to sort column ascending']")
browser.execute_script("arguments[0].setAttribute('aria-label','Implied StraddlePremium %: activate to sort column descending')", element)
bs_obj = BSoup(browser.page_source, 'html.parser').encode("utf-8")
with open("Market_Chameleon_Sorted.html", "w") as file:
    file.write(str(bs_obj))

Код выполняется без ошибок, но он не сортирует таблицу, т. Е. Несортированные и отсортированные одинаковы (я анализирую HTML-файлы в R). Кажется, что страница не обновляется после изменения HTML с помощью JavaScript. Если я делаю нормальное обновление, я снова получаю оригинальный HTML с несортированной таблицей. Как я могу объяснить Selenium для сортировки таблицы? Есть ли другой способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...