gpt4 book ai didi

python - Scrapy-splash 不渲染来自某个 react 驱动站点的动态内容

转载 作者:行者123 更新时间:2023-11-30 22:11:15 24 4
gpt4 key购买 nike

我很好奇是否有任何splash可以从这个页面获取动态的工作内容 - https://nreca.csod.com/ux/ats/careersite/4/home?c=nreca#/requisition/182

为了让splash 接收URL 片段,您必须使用SplashRequest。为了让它处理 JS cookie,我必须使用 lua 脚本。下面是我的环境、脚本和 scrapy 代码。

该网站似乎分 3 个“步骤”即可呈现:

  1. 基本上是带有脚本标记的空 html
  2. 上面的脚本运行并生成网站页眉/页脚,并检索另一个脚本
  3. #2 中的脚本运行并与 JS 设置 cookie 结合检索动态内容(我想要抓取的作业)

如果您对 URL(即在 postman 中)执行简单的 GET,您将仅看到步骤 1 的内容。对于splash,我只得到第2步的结果(页眉/页脚)。我确实在response.cookiejar中看到了JS cookies

我无法渲染动态作业内容(步骤 3)。

环境:

scrapy 1.3.3scrapy 飞溅 0.72 settings

    script = """
function main(splash)
splash:init_cookies(splash.args.cookies)
assert(splash:go{
splash.args.url,
headers=splash.args.headers,
http_method=splash.args.http_method,
body=splash.args.body,
})
assert(splash:wait(15))

local entries = splash:history()
local last_response = entries[#entries].response
return {
url = splash:url(),
headers = last_response.headers,
http_status = last_response.status,
cookies = splash:get_cookies(),
html = splash:html(),
}
end
"""

return SplashRequest('https://nreca.csod.com/ux/ats/careersite/4/home?c=nreca#/requisition/182',
self.parse_detail,
endpoint='execute',
cache_args=['lua_source'],
args={
'lua_source': script,
'wait': 10,
'headers': {'User-Agent': 'Mozilla/5.0'}
},
)

最佳答案

这一定是在隐私浏览模式下默认运行启动时出现的问题(特别是不允许访问 window.localStorage)。这通常会导致 javascript 发生异常。尝试使用 --disable-private-mode 选项启动启动或引用此文档条目:http://splash.readthedocs.io/en/stable/faq.html#disable-private-mode .

关于python - Scrapy-splash 不渲染来自某个 react 驱动站点的动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com