【发布时间】:2017-11-17 15:36:29
【问题描述】:
我正在做一个抓取项目,需要使用浏览器在我访问的网站上加载 javascript。
如果只使用 http,我可以在 m4.large 上到达 150/second。其中有2 cpus。在使用 headless chrome 的初始测试中,它在 4 / second 附近的速度要慢得多,通常瓶颈是 CPU 而不是 RAM。对于许多网页来说,基本的 http 很好,但越来越多的它不适用于单页应用程序等。
有没有人做过类似的事情?你能实现什么?您使用的堆栈是什么,例如python, selenium, headless chrome and multiprocessing。您是否必须更改 chrome 的配置?
【问题讨论】:
-
您的目标是下载还是执行 javascript?
-
这是我的知识开始放弃的地方,我基本上只想要 DOM,但对于使用诸如 react 之类的东西的网站,我从基本 http 获得的内容与我使用浏览器加载页面时完全不同或者当我使用基本的 http。我猜下载?
-
一个简单的 HTTP GET 不是一个“无头浏览器”它只是一个原始文件下载,你的 150/秒数字只是每秒下载 150 个文件,而一个网页实际上可能由很多文件。如果您想抓取实际呈现的网页,因为它会显示在网络浏览器中,那么您必须使用无头浏览器。 http get 几乎不需要服务器资源,并且将与您的网络连接可以处理的一样快。正如您所注意到的,在无头浏览器中渲染会使用大量服务器资源(CPU/RAM),而且会花费更多时间。
-
Mark B,如果我将问题标题更改为“页面呈现”,这是一个更好的问题吗?
标签: python amazon-web-services selenium web-scraping chromium