Spla sh и Lua Скрипт для очистки страницы Betsson - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь почистить веб-страницу 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&amp;competition=538&amp;sport=1&amp;region=2570001&amp;game=15956714#" href="https://sportsbook.betsson.es/#/sport/?type=0&amp;competition=538&amp;sport=1&amp;region=2570001&amp;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&region=2570001'
})

print(resp.content)

и я получил это ( массив из 20 элементов (верно, есть 20 совпадений), но всегда один и тот же игровой параметр (первый, & game = 15954390 в этом примере):

b'["https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#", "https://sportsbook.betsson.es/#/sport/?type=0&competition=538&sport=1&region=2570001&game=15954390#"]'

Не могли бы вы показать мне, что будет правильным Кстати? Что я делаю не так?

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