URLでウェブサイトのフルスクリーンショットを取得する必要があります。そのためのPHPプログラムやサービスはありますか?そうでない場合は、その目的のJavaプログラムはありますか?
8 に答える
たくさんの方法があります:
いくつかのバインディングを備えたwebkitエンジンを使用します:http ://www.blogs.uni-osnabrueck.de/rotapken/2008/12/03/create-screenshots-of-a-web-page-using-python-and-qtwebkit //
バッチモードでmozillaエンジンを使用する:http://www.chimeric.de/blog/2007/1018_automated_screenshots_using_bash_firefox_and_imagemagick
PHPまたはJavaで処理された後、ページを「レンダリング」するには、特別なバージョンのブラウザが必要です。
ほとんどの場合、Windows、OSX、またはLinuxウィンドウマネージャーを実行しているサーバーにpingを実行した後、URLをヒットするようにカスタム自動化スクリプトを設定する必要があります。
あなたのためにスクリーンショットをするサービスがそこにあります。
http://webthumb.bluga.net/home
いくつか例を挙げると。
私にとっての最善の解決策:セレンウェブドライバーを使用し、スクリーンショットを撮るのはこれ と同じくらい簡単です:
import java.io.File;
import java.net.URL;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class Testing {
public void myTest() throws Exception {
WebDriver driver = new RemoteWebDriver(
new URL("http://localhost:4444/wd/hub"),
DesiredCapabilities.firefox());
driver.get("http://www.google.com");
// RemoteWebDriver does not implement the TakesScreenshot class
// if the driver does have the Capabilities to take a screenshot
// then Augmenter will add the TakesScreenshot methods to the instance
WebDriver augmentedDriver = new Augmenter().augment(driver);
File screenshot = ((TakesScreenshot)augmentedDriver).
getScreenshotAs(OutputType.FILE);
}
}
FireFoxDriverを使用することを忘れないでください。HtmlUnitDriverは、ヘッドレスとしてこのように機能しません。
くそ簡単!
Litmusは、この種のことに関する優れたオンラインリソースです。URLを送信して、最新のブラウザでフルページのスクリーンショットを撮らせることができます。有料サブスクリプションを取得するか、週末に使用する場合は、最新のブラウザーだけでなく、22のブラウザーすべてでテストするためのアクセス権があります。私はいつもこのウェブサイトを使っています、それは驚異的だと思います。
BrowserShotsも素晴らしく、より多くのブラウザーをサポートしますが、私の経験では、それもはるかに遅いです。ただし、Litmusがテストしないブラウザをテストする必要がある場合に使用すると便利です。
これをプログラムで行うのか手動で行うのかは、質問からは明らかではありません。手動の場合: Abductionと呼ばれるFirefox用の優れたプラグインがあります!ページを画像としてレンダリングします。そうでなければ、ケインの答えはそれをかなりカバーしています。
専用サーバーがあれば、自分で行うこともできます。アイデアは、Xサーバーとブラウザーをフルスクリーンモードで起動し、ショットを撮り、それを画像ファイルに保存することです。
使用率(時折または集中的)に応じて、プロセスを適応させて(つまり、毎回Xを強制終了しないなど)、プロセスを高速化できます。
CutyCaptはスクリーンショットを撮るのに最も簡単なソリューションであり、WindowsとLinuxで機能することがわかりました。
Windowsへのインストール:
ファイルをダウンロードして実行するだけです。
Debianでのインストール:
apt-get install cutycapt xvfb
と実行中:
xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/cutycapt --url=http://www.google.com --out=/home/screenshots/screenshot_name.png
ヘッドレスブラウザを試してください。これらのいずれかがそれを行う必要があります:
- PhantomJS ->「Webkit」レイアウトエンジンを使用(Safari / Chromium)
- TrifleJS ->「Trident」レイアウトエンジンを使用(Internet Explorer)
- SlimerJS ->「Gecko」レイアウトエンジンを使用(Firefox)
次のJavaScriptコード(ファイルに保存renderpage.js
)を使用してスクリーンショットを撮ることができます。
var page = require('webpage').create();
page.open('http://en.wikipedia.org', function() {
page.render('wikipedia.png');
});
次に、コマンドラインから実行します。
> phantomjs.exe renderpage.js
これにより、スクリーンショットを含むファイルが作成さwikipedia.png
れます。