Как получить полный код со страницы?

Требуется получить ВЕСЬ код с сайта такого формата https://www.chess.com/game/live/40471234963, а именно в любом виде позицию ВСЕХ фигур на доске. Пробовал использовать bs4 и requests:

import requests
from bs4 import BeautifulSoup

response = requests.get("https://www.chess.com/game/live/40471234963")
soup = BeautifulSoup(response.content, "lxml")

print(soup.get_text)

Но в выводе нет нужной информации. Возможно нужно использовать другую библиотеку или кодировку?

P.S Нашел нужный XPath для получения FEN позиции, но не знаю как его получить(

xpath = "/html/body/div[8]/div[2]/div/div/section/div[3]"


Ответы (2 шт):

Автор решения: Эникейщик

Там есть такой фрагмент:

<!--/Hover Square-->

<.... тут непонятно что ...>

<div class="piece br square-48" style=""></div>
<div class="piece bp square-27" style=""></div>
<div class="piece bk square-17" style=""></div>
<div class="piece bp square-85" style=""></div>
<div class="piece wp square-65" style=""></div>
<div class="piece wp square-55" style=""></div>
<div class="piece bp square-15" style=""></div>
<div class="piece wq square-54" style=""></div>
<div class="piece bp square-43" style=""></div>
<div class="piece bq square-23" style=""></div>
<div class="piece wp square-82" style=""></div>
<div class="piece wb square-72" style=""></div>
<div class="piece wk square-81" style=""></div>
<div class="piece wr square-41" style=""></div>
<div class="piece wr square-31" style=""></div>
<!--/Pieces-->
<!--/MoveHints-->
<!--/Capture Hints-->

Число - численная координата клетки. 11 это а1, 81 это h1, 88 это h8, 23 - b3.

Двухбуквенная аббревиатура - что стоит на этой клетке. Первая буква - цвет:

  • w - белая (white)
  • b - черная (black)

Вторая буква - фигура:

  • p - пешка (pawn),
  • b - слон (bishop),
  • n - конь (knight),
  • r - ладья (rook),
  • q - ферзь (queen),
  • k - король (king).

Но, похоже, это все яваскрипт и в результате запроса bs этого нет, т.к. там скрипт не исполняется.

→ Ссылка
Автор решения: Toxic Sewers

Лучшее, что можно использовать в этом случае - Selenium. С ним можно удобно добираться до JS-фрагментов и потом их обрабатывать.

→ Ссылка