需要采集court.gov.cn网站公布的破产信息,网站需要翻页,原本研发的模板爬虫引擎不支持POST方式配置化抓取,因此决定直接采用splash翻页。
court.gov.cn这边有个翻页按钮:必须focus到跳转页才会显示:
image.png
Focus方法:splash:select(sel):focus()
function focus(sel)
splash:select(sel):focus()
end
当需要为跳转页设值时发现用splash:send_text()方法会在原有值前追加,并不会覆盖。因此需要嵌入JS脚本处理:
splash:evaljs('document.getElementById("rel").value = "2017-01-01";document.getElementById("kkpager_btn_go_input").value = "12";')
代码可知我们还限定了抓取时间范围。
完整代码:
function main(splash, args)
function focus(sel)
splash:select(sel):focus()
end
assert(splash:go(args.url))
assert(splash:wait(0.5))
splash:evaljs('document.getElementById("rel").value = "2017-01-01";document.getElementById("kkpager_btn_go_input").value = "12";')
focus('input[id="kkpager_btn_go_input"]')
splash:evaljs('document.querySelector("#kkpager_btn_go").click()')
assert(splash:wait(2))
return {
html = splash:html(),
png = splash:png(),
har = splash:har(),
}
end
有一点需要注意:若用连续使用splash:send_text()时,必须要先focus,不然text值会同步到各个input框。
网友评论