美文网首页
Splash清除input现有值问题处理

Splash清除input现有值问题处理

作者: 佑岷 | 来源:发表于2019-09-27 15:37 被阅读0次

需要采集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框。

相关文章

网友评论

      本文标题:Splash清除input现有值问题处理

      本文链接:https://www.haomeiwen.com/subject/lhxhyctx.html