Есть ли какой-нибудь способ получить доступ к этому тексту с помощью python selenium?

#python #selenium #selenium-webdriver

#python #селен #selenium-webdriver

Вопрос:

Я хочу использовать selenium для оценки точности шахматных ходов в моем наборе данных игр для ИИ. Пока я могу получить доступ к панели оценки, но не к FEN (он возвращает пустую строку). Есть ли какой-нибудь способ получить доступ к FEN на этом сайте.

Это текстовое поле: введите описание изображения здесь

Я хочу захватить это: rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq d6 0 2

Это HTML текстового поля:

 <input type="text" readonly="" class="text" id="fen_position" name="fen_position" value="" style="width:350px;font-size: 0.7em !important;padding: 3px 6px !important;">
 

Вот соответствующая часть моего кода:

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

options = Options()
options.headless = True

browser = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)
browser.get("https://www.365chess.com/analysis_board.php")

browser.implicitly_wait(5); fen = browser.find_element_by_id('fen_position').text
print(fen)
 

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

1. Я думаю, что это также показывает это в скрипте. Однако я не уверен, как получить к нему доступ таким образом, используя selenium

Ответ №1:

Таким образом, FEN является <input> для входных данных, значение сохраняется как «значение» в свойствах, которые вы можете использовать .get_property(«значение») для доступа к нему. Вот рабочий код.

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

options = Options()
options.headless = True

browser = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)
browser.get("https://www.365chess.com/analysis_board.php")

browser.implicitly_wait(5); fen = browser.find_element_by_id('fen_position').get_property("value")
print(fen)
 

Счастливого кодирования 🙂