1

我正在使用Splash v2.3.2,我正在尝试渲染一个页面,但它并没有渲染所有内容。它不会渲染图像或动态加载的内容。

我将我的http://localhost:8050/与脚本一起使用:

function main(splash)
  local url = splash.args.url
  assert(splash:go(url))
  assert(splash:wait(10))
  return {
    html = splash:html(),
    png = splash:png(),
    har = splash:har(),
  }
end

这是一个浏览器渲染: 浏览器渲染

这是 Splash 渲染的屏幕截图: 飞溅渲染

我试图改变等待时间,也试图允许插件。这些都不行。我假设动态加载的内容受到限制,但我不确定。任何帮助表示赞赏。

4

2 回答 2

5

问题在于 localStorage - 站点使用它,但 Splash 默认使用私有模式,这会禁用 localStorage。要修复它,请禁用私有模式(请参阅此处)。该脚本适用于我(Splash 3.0):

function main(splash)
  splash.private_mode_enabled = false
  local url = splash.args.url
  assert(splash:go(url))
  assert(splash:wait(10))
  return {
    html = splash:html(),
    png = splash:png(),
    har = splash:har(),
  }
end

另请参阅:http ://splash.readthedocs.io/en/stable/faq.html#website-is-not-rendered-correctly

于 2017-07-20T20:41:56.883 回答
0

我假设您正在尝试抓取属性描述文本。在您的代码中,您刚刚添加了 splash:wait(10),我的建议是您应该尝试实现等待特定的 css 元素。在您的情况下,span#listingpropertydescription。您可以编写一个函数来等待这个特定元素,然后返回 html 页面。

请注意,您可以在http://localhost:8050/中找到示例等待元素代码

希望对你有帮助

于 2017-07-05T08:21:20.600 回答