【问题标题】:Scrapy-Splash stop responding for some linksScrapy-Splash 停止响应某些链接
【发布时间】:2019-12-10 12:09:13
【问题描述】:

大家好,我正在抓取一个有角度的网站的抓取项目。对于这个任务,我使用了 scrapy 和 splash。几天前,scraper 运行得非常好,但现在对于某些链接它无法正常工作。它打开用户的时间线,但无法为所有用户打开视频页面(在此之前工作正常)。我没有收到任何错误,但当请求用户的视频页面时,飞溅变得无响应。我给出了足够的时间延迟,大约是 72000 秒。 版本使用 Splash 3.4:最新的 docker 镜像 刮痧 1.7.3 蟒蛇3

已编辑 大家好,今天我观察到更多关于我的启动挂起问题,我认为网站已经编写了一些 JavaScript 代码来检测它是来自正确浏览器还是来自启动的请求。因为当我在浏览器中打开链接('https://www.example.com/@user/video/6767235575733947649')时它工作正常,但是当在带有默认标题的初始浏览器中打开时,它会将我重定向到'https://s16.examplecdn.com/example/falcon/_next/static/1.0.1.309/pages/_error.js',然后启动后挂起并继续狡猾地抛出 2019-12-11 07:33:43.712428 [render] JsConsole(https://s16.examplecdn.com/example/falcon/_next/static/chunks/commons.787eed06a7e37b82e3d0.js:1): TypeError: undefined is not an object (evaluating 'h.$languageList') 所以,我认为这可以帮助你们改善飞溅,希望你们能帮助我解决这个问题。

【问题讨论】:

  • 也有一段时间我收到这个错误,它完全挂起'2019-12-11 07:15:55.628458 [render] JsConsole(s16.example.com/example/falcon/_next/static/ chunks/...): TypeError: undefined is not an object (evalating 'h.$languageList') '

标签: python scrapy web-crawler scrapy-splash splash-js-render


【解决方案1】:

Splash 可能根本无法呈现/不适用于您的网页。

不过,您可以尝试以下几种方法:


使用由Selenium 控制的成熟浏览器,您的运气通常会更好,问题更少。

【讨论】:

  • 嗨,alecxe 感谢您的重播,我已经阅读了您的建议并应用了一些调试方法,当我使用“-v2”运行启动 docker 映像时,它最终卡住了这个响应“2019-12-11 06 :43:00.399634 [network-manager] 下载完成s16.example.com/example/falcon/_next/static/1.0.1.296/pages/…'。我该如何解决这个问题。同样在硒中它没有打开所以移动飞溅。
【解决方案2】:

这里 splash 停止响应,因为它在响应时获取 error.js 页面并在渲染时会挂起。所以在调试和阅读文档之后。我写了 lua 脚本来避免挂起的飞溅。

splash:on_request(function(request)
    if string.match(request.url,'error.js') then
       print("## get error while page rendering ###")
       request.abort()
    end
end)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多