我正在抓取一些似乎对其提供很好保护的网站。我可以使它正常工作的唯一方法是使用Selenium加载页面,然后从中抓取内容。
目前,这在我的本地计算机上有效(当我访问页面时,Firefox窗口打开和关闭,并且在脚本中对其HTML进行了进一步处理)。但是,我需要在网上可以访问我的刮板。刮板嵌入在Heroku上的Flask应用程序中。有没有办法让Selenium浏览器在Heroku服务器上工作?还是有任何托管提供商可以在其中工作?
Heroku确实很棒,它的主要局限性在于它不能使用自定义软件,或者在许多情况下不能使用库。通过提供易于使用的,集中控制的托管堆栈,Heroku精简了服务器,以防止其他用途。
归结为,Heroku dyno上没有Xorg。Xorg的缺乏和安装自定义软件的能力也意味着没有xvfb,也没有运行硒预期存在的浏览器的能力。此外,浏览器通常不可用。
借助AWS这样的云产品,您会更加幸运,您可以在其中安装自定义软件,包括firefox,xvfb(以免需要所有Xorg开销),当然还有其余的抓取堆栈。说明了如何正确执行。