summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2017-11-25 12:03:17 +0100
committerLars-Dominik Braun <lars@6xq.net>2017-11-25 12:03:17 +0100
commitde94e6bc320ddc38f4b0baf006c254378be5d845 (patch)
tree03d816ff1cf01464dce5e046ce811fb649540824
parentc1fda1e1899d12d6a582b07a6a69b4e2743867ac (diff)
downloadcrocoite-de94e6bc320ddc38f4b0baf006c254378be5d845.zip
crocoite-de94e6bc320ddc38f4b0baf006c254378be5d845.tar.gz
crocoite-de94e6bc320ddc38f4b0baf006c254378be5d845.tar.bz2
Rename --run-before-snapshot and document --on* options
-rw-r--r--README.rst18
-rw-r--r--crocoite/cli.py6
2 files changed, 20 insertions, 4 deletions
diff --git a/README.rst b/README.rst
index 760742b..262258b 100644
--- a/README.rst
+++ b/README.rst
@@ -10,10 +10,11 @@ Dependencies
- Python 3
- pychrome_
- warcio_
-- html5lib
+- html5lib_
.. _pychrome: https://github.com/fate0/pychrome
.. _warcio: https://github.com/webrecorder/warcio
+.. _html5lib: https://github.com/html5lib/html5lib-python
Usage
-----
@@ -31,6 +32,21 @@ For `headless Google Chrome`_ add the parameters ``--headless --disable-gpu``.
.. _pywb: https://github.com/ikreymer/pywb
.. _headless Google Chrome: https://developers.google.com/web/updates/2017/04/headless-chrome
+Injecting JavaScript
+^^^^^^^^^^^^^^^^^^^^
+
+A lot of sites need some form of interaction to load more content. Twitter for
+instance continously loads new posts when scrolling to the bottom of the page.
+crocoite can emulate these user interactions by injecting JavaScript into the
+page before loading it. For instance ``--onload=scroll.js`` scrolls the page to
+the bottom.
+
+If extra work is required before taking a DOM snapshot, additional scripts can
+be run with ``--onsnapshot=canvas-snapshot.js``, which replaces all HTML
+``<canvas>`` elements with a static picture of their current contents.
+
+Example scripts can be found in the directory ``crocoite/data/``.
+
Caveats
-------
diff --git a/crocoite/cli.py b/crocoite/cli.py
index 60d6661..f070625 100644
--- a/crocoite/cli.py
+++ b/crocoite/cli.py
@@ -391,10 +391,10 @@ def main ():
parser.add_argument('--browser', default='http://127.0.0.1:9222', help='DevTools URL')
parser.add_argument('--timeout', default=10, type=int, help='Maximum time for archival')
parser.add_argument('--idle-timeout', default=2, type=int, help='Maximum idle seconds (i.e. no requests)', dest='idleTimeout')
- parser.add_argument('--onload', action='append', help='')
parser.add_argument('--log-buffer', default=1000, type=int, dest='logBuffer')
parser.add_argument('--keep-tab', action='store_true', default=False, dest='keepTab', help='Keep tab open')
- parser.add_argument('--run-before-snapshot', default=[], action='append', dest='runBeforeSnapshot', help='Run JavaScript files before creating DOM snapshot')
+ parser.add_argument('--onload', default=[], action='append', help='Inject JavaScript file before loading page')
+ parser.add_argument('--onsnapshot', default=[], action='append', help='Run JavaScript files before creating DOM snapshot')
parser.add_argument('url', help='Website URL')
parser.add_argument('output', help='WARC filename')
@@ -481,7 +481,7 @@ def main ():
tab.Network.loadingFailed = None
tab.Page.loadEventFired = None
- script = loadScripts (args.runBeforeSnapshot)
+ script = loadScripts (args.onsnapshot)
writeScript ('onsnapshot', script, writer)
tab.Runtime.evaluate (expression=script, returnByValue=True)
writeDOMSnapshot (tab, writer)