Очистка динамического URL, который меняется в зависимости от времени, с помощью Selenium в Python - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь очистить следующий URL:

https://www.oddsportal.com/soccer/england/premier-league/liverpool-norwich-4IMoMG3q/

Используя вкладку Сеть в инструментах разработчика Chrome, вы можете видеть, что есть API, который подает данные на веб-сайт- который находится в форме JSON - и выглядит как ниже.Это данные, которые я пытаюсь очистить.

https://fb.oddsportal.com/feed/match/1-1-4IMoMG3q-5-2-yj1e3.dat?_=1562831112277

Это код, который я сейчас пытаюсь очистить:

from selenium.webdriver.chrome.options import Options
import json
import urllib.parse
from time import time

options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)

# Access the initial webpage to create the info_dict (including the match_id, and hash)
driver.get('https://www.oddsportal.com/soccer/england/premier-league/liverpool-norwich-4IMoMG3q')
page = driver.page_source
info_dict = json.loads(page.split('var page = new PageEvent(')[-1].split(');')[0])
xhash = urllib.parse.unquote(info_dict['xhash'])
match_id = info_dict['id']

# Access to the feed URL based on the values from the info_dict
driver.get('http://fb.oddsportal.com/feed/match/1-1-{}-1-2-{}.dat?_={}'.format(match_id, xhash, int(round(time()*1000)) + 1000))
print(driver.page_source)

URL-адрессостоит из трех факторов - match_id, хэша и времени эпохи в миллисекундах.Однако, когда я пытаюсь получить доступ к этому в Selenium, я получаю следующий ответ:

globals.jsonpCallback('/feed/match/1-1-4IMoMG3q-1-2-yjb3a.dat?_=1562795864899', {'e':'404'});

Буду очень признателен за любую помощь с этим, так как я не совсем понимаю, где я 'я иду не так!

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