diff options
-rw-r--r-- | README.rst | 18 | ||||
-rw-r--r-- | crocoite/cli.py | 6 |
2 files changed, 20 insertions, 4 deletions
@@ -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) |