Я пытаюсь почистить веб-страницу https://sportsbook.betsson.es/# / sport /? Type = 0 & конкуренция = 538 & game = 15977319 & sport = 1®ion = 2570001 (да, премьер-лига на странице Betsson) с Spla sh (да, на веб-странице javascript).
Я хотел бы получить все ссылки (URL) всех матчей. (вот и все, URL-страница с параметром & game = в строке запроса для получения подробной информации о событии). Например, https://sportsbook.betsson.es/# / спорт /? Тип = 0 & соревнование = 538 & спорт = 1®ion = 2570001 & game = 15956714
Я обнаружил, что единственное место в DOM, где находится игра (id):
<a data-badge="" ng-if="!menu.url" ng-href="https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15956714#" href="https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15956714#">Vista del Evento</a>
, и атрибут href меняется, когда я щелкаю строки события в главной таблице. Я использую скрипт lua, чтобы получить массив всех событий splash:select_all('.aic-hdp-row')
и event:mouse_click()
splash:wait(3)
, чтобы получить модифицированный атрибут href, но нет никакого способа. Я пытался изменить значение в секундах для spla sh: wait (), но если оно меньше 3, то же самое, и если оно намного больше 3, я получил тайм-аут.
(В этом примере я использую python запросов , но я использую scrapy также)
import requests
script = """
treat = require('treat')
local result = treat.as_array({})
splash:go(args.url)
while not splash:select('.aic-hdp-row') do
splash:wait(0.1)
end
local events = splash:select_all('.aic-hdp-row')
for i, event in ipairs(events) do
result[i] = splash:select('.toptab-pre-match > li:nth-child(1) > a:nth-child(1)'):getAttribute('href')
event:mouse_click()
splash:wait(3)
end
return result
"""
resp = requests.post('http://localhost:8050/run', json={
'lua_source': script,
'timeout': 90,
'url': 'https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001'
})
print(resp.content)
и я получил это ( массив из 20 элементов (верно, есть 20 совпадений), но всегда один и тот же игровой параметр (первый, & game = 15954390 в этом примере):
b'["https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1®ion=2570001&game=15954390#"]'
Не могли бы вы показать мне, что будет правильным Кстати? Что я делаю не так?