Я пытаюсь очистить некоторые данные со страницы, которая использует Javascript входов для загрузки таблицы и обработки разбивки на страницы без опции «next» для страниц. Я использую spla sh для обработки Javascript, и он работает в веб-интерфейсе, однако, когда я запускаю паука, он продолжает выдавать мне ошибку 504 Gateway Time-Out. Мне удалось очистить первую страницу, но разбивка на страницы является проблемой.
Вот паук:
def parse_response(self, response):
for tr in response.xpath("//table[@id='ctl00_ContentPlaceHolder1_uctl_gvResults']/tbody/tr"):
yield{
'lld': tr.xpath(".//td[3]/text()").extract_first(),
'crown-land-desc': tr.xpath(".//td[4]/text()").extract_first(),
'land-class': tr.xpath(".//td[5]/text()").extract_first(),
'acres': tr.xpath(".//td[6]/text()").extract_first(),
'occupant': tr.xpath(".//td[8]/text()").extract_first()
}
# def parse_other_pages(self, response):
for page in response.data:
sel = Selector(text=page)
for tr in response.xpath("//table[@id='ctl00_ContentPlaceHolder1_uctl_gvResults']/tbody/tr"):
yield{
'lld': tr.xpath(".//td[3]/text()").extract_first(),
'crown-land-desc': tr.xpath(".//td[4]/text()").extract_first(),
'land-class': tr.xpath(".//td[5]/text()").extract_first(),
'acres': tr.xpath(".//td[6]/text()").extract_first(),
'occupant': tr.xpath(".//td[8]/text()").extract_first()
}
А вот сценарий Lua, который я использую:
script= '''
function main(splash, args)
assert(splash:go(args.url))
assert(splash:wait(0.5))
splash:send_keys("<Tab>")
splash:send_keys("<Tab>")
splash:send_keys("<Tab>")
splash:send_keys("<Tab>")
splash:send_text("493")
splash:send_keys("<Tab>")
splash:send_keys("<Return>")
assert(splash:wait(2.5))
treat=require('treat')
result= {}
for i=1,10,1
do
local element = splash:select('td > a:first-child')
local bounds = element:bounds()
assert(element:mouse_click{x=bounds.width/2, y=bounds.height/2})
assert(splash:wait(3.5))
result[i]=splash.html()
end
return treat.as_array(result)
end
'''
Уменьшение времени ожидания приводит к тому, что Spla sh не может загрузить страницу