Ferret – Declarative web scraping
Why is this a language instead of a library on top of an existing language?<p>Here's what it would look like as a JavaScript (Node.js or browser) library:<p><pre><code>    let g = getDocument("https://www.google.com/", true);
    
    g.input('input[name="q"]', "ferret");
    g.click('input[name="btnK"]');
    
    g.waitNavigation();
    
    let result = g.elements('.g').map(({
      title: result.element('h3 > a'),
      description: result.element('.st'),
      url: result.element('cite')
    }));
    
    return result.filter(i => i.title !== null);</code></pre>