通过使用 splash 在 scrapy 中选择 java 脚本下拉菜单来抓取网站
Crawling website by selecting java script drop down menu in scrapy using splash
我正在尝试从 https://www.steelmint.com/ingot-prices-indian 获取每日价格。我已经使用 splash 设置了一个 scrapy 脚本,我需要 select 下拉菜单的不同日期和报废价格作为数字。我只需要来自页面、日期和价格的两个数据。
我无法下拉更改它的值,现在无法找到任何指导它的教程。大多数处理表单处理但不起作用。
我的 lua 使用 Splash 的脚本是:
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
页面呈现后,我很容易获得价值。新手在这里。提前致谢。
我认为你应该运行 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
我正在尝试从 https://www.steelmint.com/ingot-prices-indian 获取每日价格。我已经使用 splash 设置了一个 scrapy 脚本,我需要 select 下拉菜单的不同日期和报废价格作为数字。我只需要来自页面、日期和价格的两个数据。
我无法下拉更改它的值,现在无法找到任何指导它的教程。大多数处理表单处理但不起作用。
我的 lua 使用 Splash 的脚本是:
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
页面呈现后,我很容易获得价值。新手在这里。提前致谢。
我认为你应该运行 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