scrapy+报错pyppeteer.errors.BrowserError: Browser closed unexpectedly:解决办法
运行环境 Runtime environment 1 2 3 4 5 6 操作系统: Windos10 IDE: pycharm 2021.3.1 x64 语言: python v3.9.1 框架: Scrapy v2.4.1 ---- gerapy-pyppeteer 0.0.13
症状 在centos服务器上部署scrapty+gerapy-pyppeteer,运行
1 2 pyppeteer.errors.BrowserError: Browser closed unexpectedly: [ERROR] Running as root without --no-sandbox is not supported. See https://crbug.com/638180
问题原因 于是我去扒拉的一下gerapy-pyppeteer封装的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 async def _process_request(self, request, spider): """ use pyppeteer to process spider :param request: :param spider: :return: """ options = { 'headless': self.headless, 'dumpio': self.dumpio, 'devtools': self.devtools, 'args': [ f'--window-size={self.window_width},{self.window_height}', ] } if self.pretend: options['ignoreDefaultArgs'] = [ '--enable-automation' ] if self.executable_path: options['executablePath'] = self.executable_path if self.ignore_https_errors: options['ignoreHTTPSErrors'] = self.ignore_https_errors if self.slow_mo: options['slowMo'] = self.slow_mo if self.ignore_default_args: options['ignoreDefaultArgs'] = self.ignore_default_args if self.handle_sigint: options['handleSIGINT'] = self.handle_sigint if self.handle_sigterm: options['handleSIGTERM'] = self.handle_sigterm if self.handle_sighup: options['handleSIGHUP'] = self.handle_sighup if self.auto_close: options['autoClose'] = self.auto_close if self.disable_extensions: options['args'].append('--disable-extensions') if self.hide_scrollbars: options['args'].append('--hide-scrollbars') if self.mute_audio: options['args'].append('--mute-audio') if self.no_sandbox: options['args'].append('--no-sandbox') if self.disable_setuid_sandbox: options['args'].append('--disable-setuid-sandbox') if self.disable_gpu: options['args'].append('--disable-gpu')
1 2 if self.no_sandbox: options['args'].append('--no-sandbox')
gerapy-pyppeteer封装的时候已经把沙盒参数加入了进去,那就说明不是这个问题。
既然是centos首次安装使用gerapy-pyppeteer,那会不会就是有关的环境和依赖没有安装完全。
解决办法 把pyppeteer所需要的依赖安装完整。
centos 系统的命令如下
1 yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y
ubuntu 系统的命令如下
1 apt-get install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y
根据自己的需要添加sudo
总结 scrapy + gerapy-pyppeteer 优雅组合,实现scrapy的动态爬虫。
数据量小,5W数据以下可以玩玩。数据量大,妥妥内存溢出…