Lua скрипт не смог нажать на кнопку

58
6

Я пытаюсь очистить полеты от ссылки с помощью scrapy-splash с помощью этого сценария lua:

function main(splash)
local waiting_time = 2

-- Go to the URL
assert(splash:go(splash.args.url))
splash:wait(waiting_time)

-- Click on "Outgoing tab"
local outgoing_tab = splash:select('#linkRealTimeOutgoing')
outgoing_tab:mouse_click()
splash:wait(waiting_time)

-- Click on "More Flights" button
local more_flights_btn = splash:select('#ctl00_rptOutgoingFlights_ctl26_divPaging > div.advanced.noTop > a')
more_flights_btn:mouse_click()
splash:wait(waiting_time)

return splash:html()
end

и по какой-то причине я получаю эту ошибку:

'LUA_ERROR', 'message': 'Lua error: [string "..."]:16: attempt to index local \'more_flights_btn\' (a nil value)', 'error': "attempt to index local 'more_flights_btn' (a nil value)"}, 'type': 'ScriptError', 'description': 'Error happened while executing Lua script'}

кто-нибудь знает, почему это произошло? Также кто-нибудь знает, где я могу получить общую версию для интеграции сценариев lua с splash? кроме официального сайта?

Заранее спасибо!

спросил(а) 2019-02-21T19:30:00+03:00 1 год, 8 месяцев назад
1
Решение
123

Это просто похоже на временную проблему. Я запускал ваш скрипт Lua пару раз, и я получил эту ошибку только один раз.

Достаточно просто подождать дольше, прежде чем получить кнопку. Однако, если время, которое требуется, сильно варьируется, и вы не всегда хотите ждать полный рабочий день, тогда вы можете попробовать немного более умный цикл, например так:

-- Click on "More Flights" button
local more_flights_btn
-- Wait up to 10 seconds:
for i=1,10 do
splash:wait(1)
more_flights_btn = splash:select('#ctl00_rptOutgoingFlights_ctl26_divPaging > div.advanced.noTop > a')
if more_flights_btn then break end
-- If it was not found we'll wait again.
end

ответил(а) 2019-02-21T20:59:00+03:00 1 год, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема