通过使用splash选择scrapy中的java脚本下拉菜单来爬网

时间:2018-03-26 10:13:09

标签: scrapy web-crawler splash scrapy-splash

我想从https://www.steelmint.com/ingot-prices-indian获取每日价格。我已经设置了一个使用splash的scrapy脚本,我需要选择不同日期的下拉菜单和废品价格作为数字。我只需要来自页面,日期和价格的两个数据。

我无法下载更改它的值,现在能够找到任何指导它的教程。大多数处理表单处理但不起作用。

我使用Splash的lua脚本是:

    function main(splash, args)
  local form = splash:select('form-control')
  local values = assert(form:form_values())
  values.frmDt = "14"
  values.frmMt = "March"
  values.frmYr = "2018"
  assert(form:fill(values))
  assert(splash:go(args.url))
  assert(splash:wait(0.5))
  return {
    html = splash:html(),``
    png = splash:png(),
    har = splash:har(),
  }
end

一旦呈现页面,我很容易获得价值。新手在这里。提前谢谢。

1 个答案:

答案 0 :(得分:3)

我认为你应该通过页面上的flash来运行javascript,它更简单。请看以下工作示例:

function main(splash, args)
  assert(splash:go(args.url))

  assert(splash:runjs('document.getElementById("frmDt").value = "14"'))
  assert(splash:runjs('document.getElementById("frmMt").value = "March"'))
  assert(splash:runjs('document.getElementById("frmYr").value = "2018"'))

  assert(splash:wait(0.5))
  return {
    html = splash:html(),``
    png = splash:png(),
    har = splash:har(),
  }
end