only_scraper 0.1.2

Only scrape webpages
Documentation
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/lib.rs`."><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-9ee3a5e31a2afa3e.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="docs" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0 (82e1608df 2023-12-21)" data-channel="1.75.0" data-search-js="search-8fbf244ebcf71464.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/src-script-3280b574d94e47b4.js"></script><script defer src="../../src-files.js"></script><script defer src="../../static.files/main-9dd44ab47b99a0fb.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc src"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><div data-nosnippet><pre class="src-line-numbers"><a href="#1" id="1">1</a>
<a href="#2" id="2">2</a>
<a href="#3" id="3">3</a>
<a href="#4" id="4">4</a>
<a href="#5" id="5">5</a>
<a href="#6" id="6">6</a>
<a href="#7" id="7">7</a>
<a href="#8" id="8">8</a>
<a href="#9" id="9">9</a>
<a href="#10" id="10">10</a>
<a href="#11" id="11">11</a>
<a href="#12" id="12">12</a>
<a href="#13" id="13">13</a>
<a href="#14" id="14">14</a>
<a href="#15" id="15">15</a>
<a href="#16" id="16">16</a>
<a href="#17" id="17">17</a>
<a href="#18" id="18">18</a>
<a href="#19" id="19">19</a>
<a href="#20" id="20">20</a>
<a href="#21" id="21">21</a>
<a href="#22" id="22">22</a>
<a href="#23" id="23">23</a>
<a href="#24" id="24">24</a>
<a href="#25" id="25">25</a>
<a href="#26" id="26">26</a>
<a href="#27" id="27">27</a>
<a href="#28" id="28">28</a>
<a href="#29" id="29">29</a>
<a href="#30" id="30">30</a>
<a href="#31" id="31">31</a>
<a href="#32" id="32">32</a>
<a href="#33" id="33">33</a>
<a href="#34" id="34">34</a>
<a href="#35" id="35">35</a>
<a href="#36" id="36">36</a>
<a href="#37" id="37">37</a>
<a href="#38" id="38">38</a>
<a href="#39" id="39">39</a>
<a href="#40" id="40">40</a>
<a href="#41" id="41">41</a>
<a href="#42" id="42">42</a>
<a href="#43" id="43">43</a>
<a href="#44" id="44">44</a>
<a href="#45" id="45">45</a>
<a href="#46" id="46">46</a>
<a href="#47" id="47">47</a>
</pre></div><pre class="rust"><code><span class="doccomment">//! ## Overview 📖
//!
//! Only Scraper is a minimalist, high-performance web scraping tool written in Rust 🦀, focusing solely on the task of scraping web pages. It stands out by not using any external libraries, thereby providing a streamlined and efficient solution for developers. This project is tailored for those who seek a simple and direct approach to web scraping, without the overhead of additional functionalities that are often bundled in other libraries.
//!
//! ## Why Only Scraper? 🤔
//!
//! With a plethora of web scraping tools available, many of which offer extensive features like end-to-end testing and browser automation, Only Scraper cuts through the noise by offering a no-frills, focused solution. By eliminating the dependency on external libraries, Only Scraper ensures that your scraping tasks are not bogged down by unnecessary complexities, making it a swift and straightforward option for retrieving web page data.
//!
//! ## Features 🌟
//!
//! - **Zero External Dependencies** 📦: Maximizes efficiency and minimizes setup time by relying solely on Rust&#39;s standard library.
//! - **Optimized for Speed** ⚡: Takes full advantage of Rust&#39;s performance and safety to offer quick and reliable web scraping.
//! - **Singular Focus** 🔍: Provides just what you need for scraping web pages, nothing more, nothing less.
//!
//! ### Usage 📝
//!
//! Only Scraper is designed to be as simple as possible, with only one method needed to perform web scraping. Here&#39;s a minimal example to demonstrate its usage:
//!
//! ```rust
//! use only_scraper;
//! use std::io::Result;
//!
//! fn main() -&gt; Result&lt;()&gt; {
//!     let html = only_scraper::scrape(&quot;https://example.com&quot;)?;
//!     println!(&quot;{}&quot;, html);
//!     Ok(())
//! }
//! ```
//!
//! This code snippet fetches the HTML content of the specified URL and prints it out, showcasing the simplicity and efficiency of Only Scraper.
</span><span class="kw">use </span>std::io;

<span class="kw">mod </span>chrome;
<span class="kw">use </span>chrome::{application, executable, scraper};

<span class="doccomment">/// The `scrape` method automates web scraping by taking a URL as input and returning the webpage&#39;s HTML content. Initially, it checks for Chrome&#39;s installation, installing the latest version if necessary, to ensure a modern browser environment is available. The method uses Chrome in headless mode to efficiently load and scrape the webpage, including dynamically generated content. This process is fully automated, providing an easy and resource-efficient way to obtain the complete HTML source code of a webpage for further processing.
</span><span class="kw">pub fn </span>scrape(url: String) -&gt; io::Result&lt;String&gt; {
    <span class="kw">let </span>executable_path;
    <span class="kw">match </span>application::download_and_install_chrome() {
        <span class="prelude-val">Ok</span>(path) =&gt; executable_path = path,
        <span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; executable_path = executable::find_executable()<span class="question-mark">?</span>,
    }

    <span class="kw">let </span>output = scraper::scrape(executable_path, url)<span class="question-mark">?</span>;

    <span class="prelude-val">Ok</span>(output)
}
</code></pre></div></section></main></body></html>