无聊之作:抓取网页截图

2013-06-04 09:17:12 +08:00
 vibbow
http://vps.vsean.net/screenshot/
输入网址后,稍等一会,就会显示出网页的截图

源代码: https://gist.github.com/vibbow/5702882
基于PHP + Selenium
9939 次点击
所在节点    分享创造
92 条回复
Livid
2013-06-04 10:59:56 +08:00
@vibbow Append 功能需要主题已经存在 30 分钟。
qiayue
2013-06-04 11:01:48 +08:00
在很多时候都会用到网页截图功能,以前(前几年了,最近没找)找的都不怎么满意,要么是截的图不好,要么是别的网站给出的api,有限制,今天终于发现楼主做的这个效果不错,所以立马上来表示感谢。

对于楼上有两位质疑有什么用处和说意义不大的童鞋,我觉得可能是你们没有碰到类似的需求。
生活中我们常会以个人的见识阅历来评价一件事情,而其实这种评价并不客观。
Livid
2013-06-04 11:02:32 +08:00
@vibbow Java GC 问题可以把 JVM 换成 JRockit 试试。
cdfmr
2013-06-04 11:03:07 +08:00
@kusys archive.org还是很强大的,除了网页,一些下载文件它都保留着,我用它找过几次古董资源。另外,一定程度上兼具FQ功能。
vibbow
2013-06-04 11:03:35 +08:00
@chiefly 因为访问的是淘宝国际版
2code
2013-06-04 11:04:10 +08:00
貌似抓一次被墙的网站就挂掉了
vibbow
2013-06-04 11:04:27 +08:00
@panxianhai 我这个是直接调用了一个完整的Firefox,支持Flash。
vibbow
2013-06-04 11:05:50 +08:00
@2code 服务器本身在国外,请考虑你提交的网址是否本身有关键字,导致被和谐了。
vibbow
2013-06-04 11:06:41 +08:00
@Livid 怎么换?我现在使用的是Ubuntu自带的openjdk。
对Java完全没好感...
Livid
2013-06-04 11:07:40 +08:00
@vibbow 去 Oracle 网站下载一个 JRockit,然后用它来启动 Selenium server。
vibbow
2013-06-04 11:12:00 +08:00
@Livid 感觉好复杂...
http://vsean.net/pic/di-W3F4.png
反正服务器现在还撑得住。
等撑不住了就上Queue...
firsthym
2013-06-04 11:29:13 +08:00
可以整一个service
dndx
2013-06-04 11:37:36 +08:00
@vibbow JVM 的内存管理方式应该是我见过的最好的之一。

JVM 会在不同的情况下调用不同的 gc 策略,尽可能降低对运行性能的影响。基本没有人工干预的必要。
vibbow
2013-06-04 11:38:23 +08:00
@dndx 遗憾的是,刚才Java内存爆了一次,然后自己挂了...
只好重启vm了...
manhere
2013-06-04 11:38:34 +08:00
@vibbow
( ! )Fatal error: Uncaught exception 'PHPWebDriver_UnhandledWebDriverError' with message ' in /var/www/vps.vsean.net/screenshot/PHPWebDriver/WebDriverBase.php on line 50

( ! ) PHPWebDriver_UnhandledWebDriverError: Unable to connect to host 127.0.0.1 on port 7058 after 45000 ms. Firefox console output: Error: cannot open display: :99 Error: cannot open display: :99 in /var/www/vps.vsean.net/screenshot/PHPWebDriver/WebDriverBase.php on line 50
vibbow
2013-06-04 11:40:10 +08:00
@manhere 刚才内存被Java撑爆了一次...
把VM重启了一下。
sarices
2013-06-04 11:44:21 +08:00
被抓取的网站图片一多就不行了 http://zhengweidong.com/ 抓取失败了
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 30400913 bytes) in /var/www/vps.vsean.net/screenshot/PHPWebDriver/WebDriverBase.php on line 186
dndx
2013-06-04 11:49:09 +08:00
@vibbow 如果服务器内存比较大,可以考虑增加 JVM 堆大小。

应该可以缓解 OOM 的情况。
dndx
2013-06-04 11:50:35 +08:00
@vibbow 忽略上条,没看见 PHP 无法申请内存的提示。。

话说,截图文件还是比较大的,直接在内存里 decode 流量上去必然堪忧啊。

最好可以用流式输出或者直接写到硬盘。
wingoo
2013-06-04 11:56:04 +08:00
非常赞啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX