Ist es möglich, ein Skript in Perl zu schreiben, das verschiedene URLs öffnet und jeweils einen Screenshot speichert?Wie kann ich Screenshots von Webseiten mit Perl machen?
Antwort
Sie können WWW::Mechanize::Firefox verwenden, um eine Firefox-Instanz zu steuern und die gerenderte Seite mit $mech->content_as_png
zu sichern.
Beachten Sie jedoch, dass die Einrichtung eine große Herausforderung darstellen kann.
Wenn alles wie erwartet funktioniert, können Sie einfach ein Skript wie dieses verwenden, um Bilder der gewünschten Websites zu erstellen, aber Sie sollten Firefox starten und manuell auf die gewünschte Breite skalieren (Höhe spielt keine Rolle, WWW :: Mechanize) :: Firefox speichert immer die ganze Seite).
use WWW::Mechanize::Firefox;
use Path::Class qw/file/;
my $mech = WWW::Mechanize::Firefox->new(
bufsize => 10_000_000, # PNGs might become huge
);
$mech->get('http://www.stackoverflow.com/');
my $fh = file('test.png')->open('> :raw');
print $fh $mech->content_as_png();</code></pre>
Ich schrieb über dieses Modul für PerlTricks: [Kontrolle Firefox von Perl] (http: // perltricks.com/article/138/2014/12/8/Controlling-Firefox-from-Perl) –
Sie könnten auch Win32::IE::Mechanize verwenden, um die Web-Seite mit IE zu machen, und dann Win32::Screenshot die Seite zu erfassen. Sie müssen wahrscheinlich etwas arbeiten, um herauszufinden, wo Sie den Screenshot machen können, aber das sollte nicht zu schwer sein.
Dies wird natürlich nur eine Windows-Plattform-Lösung, aber kann ausreichen.
Sieht aus wie Win32 :: IE :: Mechanize funktioniert nicht mehr mit Activestate und/oder Windows 7: https: //rt.cpan. org/Public/Dist/Display.html? Name = Win32-IE-Mechanize, aber das sieht so aus, als ob es noch funktioniert http://search.cpan.org/dist/Win32-IEAutomation-0.5/lib/Win32/IEAutomation.pm –
Verwenden Sie das Modul WWW::Selenium
, für das Sie eine Selenium Remote Control Sitzung eingerichtet haben und ausgeführt werden müssen.
Die capture_entire_page_screenshot()
Methode sollte Sie zum Laufen bringen.
Von WWW::Selenium auf CPAN:
$sel->capture_entire_page_screenshot($filename, $kwargs)
Speichert den gesamten Inhalt des aktuellen Fensters Leinwand in eine PNG-Datei ...
Ein typisches Skript:
use strict;
use warnings;
use WWW::Selenium;
my $sel = WWW::Selenium->new(host => "localhost",
port => 4444,
browser => "*iexplore",
browser_url => "http://www.google.com",
);
$sel->start;
$sel->open("http://www.google.com");
$sel->capture_entire_page_screenshot("screenshot.png");
$sel->close;
Ein anderer Ansatz, der die Verwendung eines Browsers nicht erfordert, besteht darin, ImageMagick und HTML2PS zu verwenden, um das Bild zu konvertieren. Seien Sie gewarnt, dies ist nicht trivial, und es ist fast unmöglich (zuletzt habe ich versucht), dies funktioniert auf Windows richtig zu machen.
Sobald ImageMagick installiert ist, besteht der einfachste Ansatz darin, einfach einen Systemaufruf an das convert
-Programm auszuführen, das ImageMagick installiert. Wenn Sie weniger hackisch vorgehen möchten, können Sie die API PerlMagickImageMagick verwenden.
Es gibt eine ausgezeichnete Diskussion zu diesem Ansatz finden Sie unter PerlMonks.
Verwenden Sie eine Webdienst-API eines Drittanbieters wie http://webshotspro.com/ (Screenshots) oder http://www.thumbalizr.com/ (Miniaturansichten).
- 1. Screenshots in Xcode machen
- 2. Wie mache ich Screenshots von Webseiten mit Ruby und einem Unix-Server?
- 3. Wie kann ich Thumbnails von Webseiten mit einer Layout-Engine in Perl erstellen?
- 4. Wie erstellt man Thumbnails von Webseiten mit PHP?
- 5. Wie kann ich Blockkommentare mit Perl entfernen?
- 6. Wie speichere ich Screenshots mit automatischer Benennung?
- 7. Wie kann ich einen Screenshot einer Website mit .NET machen?
- 8. C# -Bibliothek, um Screenshots zu machen?
- 9. Wie kann ich XML von Perl erstellen?
- 10. Wie kann ich von Perl erzeugten Perl-Code verschönern?
- 11. Wie kann ich lange Webseiten mit einer schönen Suppe analysieren?
- 12. Webseite thumnails (Screenshots)
- 13. Wie kann ich mit Perl 6 beginnen?
- 14. Wie kann ich Webformulare mit Perl ausfüllen?
- 15. Wie kann ich Voronoi Treemaps machen?
- 16. Wie kann man Screenshots von einem Videoclip 50 Minuten in den Clip aufnehmen und schnell machen?
- 17. Wie man Emulator Screenshots mit Eclipse macht?
- 18. SWF Screenshots
- 19. Wo werden Screenshots von phantom.js gespeichert?
- 20. Wie kann ich es mit CSS3 machen?
- 21. Wie kann ich Perl-Quellcode automatisch aufräumen?
- 22. Wie kann ich Dateiberechtigungen von Perl aus festlegen?
- 23. Wie kann ich Berechtigungen in Perl löschen?
- 24. Wie kann ich JSON in Perl parsen?
- 25. Take Screenshots von WebBrowser Control
- 26. Switch wurde von Perl 5.14 entfernt? was soll ich machen?
- 27. Wie kann ich Screenshot von gedrehten TextView mit Emoji machen?
- 28. Wie kann ich Perl-Testfälle in Eclipse mit EPIC ausführen?
- 29. Kann die Perl-Syntax nicht verwendet werden, um HTML-Webseiten mit Selenium zu testen?
- 30. Wie kann ich Abkürzungen aus einer Datei mit Perl extrahieren?
Das wäre schwer, Perl kann keine Webseite rendern, um einen Screenshot zu speichern. –
Python oder eine andere Skriptsprache? – fixxxer
@Murali: Das bedeutet nicht, dass Sie Perl nicht verwenden können. Siehe meinen Beitrag unten. – Zaid