Селен не получает разные URL - PullRequest
0 голосов
/ 06 января 2020

Я использую Selenium в Python для очистки сайта, который загружает Javascript Вот мой код: [https://gist.github.com/elliotmartin/f9cb5021655f913f250b08f39a14dc9d] [1]

По какой-то причине, поскольку я l oop по различным URL-адресам функция get_boards возвращает точно такие же результаты.

Например: Этот URL-адрес:

https://playhearthstone.com/en-us/community/leaderboards/?region=US&leaderboardId=STD&seasonId=73&page=1

Gets:

{'FAST44': '1', 'Mesmile': '2', 'Pizza': '3', 'Stacker': '4', 'Jackpot': ' 5 ',' Gavin ':' 6 ',' Monsanto ':' 7 ',' VictorFalcon ':' 8 ',' Cantelope ':' 9 ',' Rozz ':' 10 ',' molino ':' 11 ' , 'Edd ie': '12', 'SwitchSSB': '13', 'Rey': '14', 'wabeka': '15', 'Enrico': '16', 'TheRabbin': '17 ',' Jalexander ':' 18 ',' Itim ':' 19 ',' Jay ':' 20 ',' DuVlad ':' 21 ',' Staz ':' 22 ',' BanditKeith ':' 23 ', «Акацу»: «24», «Монций»: «25»}

И этот URL:

https://playhearthstone.com/en-us/community/leaderboards/?region=US&leaderboardId=STD&seasonId=73&page=2

Также получает:

{'FAST44': '1', 'Mesmile': '2', 'Pizza': '3', 'Stacker': '4' , «Джекпот»: «5», «Gavin»: «6», «Monsanto»: «7», «VictorFalcon»: «8», «Cantelope»: «9», «Rozz»: «10», «molino»: «11», «Edd ie»: «12», «SwitchSSB»: «13», «Rey»: «14» , 'wabeka': '15', 'Enrico': '16', 'TheRabbin': '17', 'Jalexander': '18', 'Itim': '19', 'Jay': '20', ' DuVlad ':' 21 ',' Staz ':' 22 ',' BanditKeith ':' 23 ',' Akatsu ':' 24 ',' Montius ':' 25 '}

Но нет из этих значений даже есть где-то в HTML, загруженном Javascript во втором URL.

То есть селен не должен перезагружать новый URL? Я очень новичок в Selenium, так что я думаю, в этом и заключается моя проблема.

[

1]: https://gist.github.com/elliotmartin/f9cb5021655f913f250b08f39a14dc9d

1 Ответ

0 голосов
/ 06 января 2020

Попробуйте так:

driver.get('https://playhearthstone.com/en-us/api/community/leaderboardsData?region=US&leaderboardId=STD&seasonId=73')

rows = driver.execute_script("""
  return JSON.parse(document.body.innerText).leaderboard.rows.reduce(function(acc, o){
    acc[o.accountid] = o.rank
    return acc
  }, {})
""")

Я просто получаю данные API от конечной точки и возвращаю их в python

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