diff options
Diffstat (limited to 'public/docs')
23 files changed, 0 insertions, 14669 deletions
diff --git a/public/docs/api-reference/index.html b/public/docs/api-reference/index.html deleted file mode 100644 index 5d50b5a..0000000 --- a/public/docs/api-reference/index.html +++ /dev/null @@ -1,638 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - API Reference – Flyscrape</title> - <meta name="description" content="Query API Reference// <div class="element" foo="bar">Hey</div> const el = doc.find(".element") el.text() // "Hey" el.html() // `<div class="element">Hey</div>` el.attr("foo") // "bar" el.hasAttr("foo") // true el.hasClass("element") // true // <ul> // <li class="a">Item 1</li> // <li>Item 2</li> // <li>Item 3</li> // </ul> const list = doc.find("ul") list.children() // [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] const items = list.find("li") items.length() // 3 items.first() // <li>Item 1</li> items.last() // <li>Item 3</li> items.get(1) // <li>Item 2</li> items." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/api-reference/" itemprop="url" /> - - - - -<meta property="og:title" content="API Reference" /> -<meta property="og:description" content="Query API Reference// <div class="element" foo="bar">Hey</div> const el = doc.find(".element") el.text() // "Hey" el.html() // `<div class="element">Hey</div>` el.attr("foo") // "bar" el.hasAttr("foo") // true el.hasClass("element") // true // <ul> // <li class="a">Item 1</li> // <li>Item 2</li> // <li>Item 3</li> // </ul> const list = doc.find("ul") list.children() // [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] const items = list.find("li") items.length() // 3 items.first() // <li>Item 1</li> items.last() // <li>Item 3</li> items.get(1) // <li>Item 2</li> items." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/api-reference/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="API Reference"> -<meta itemprop="description" content="Query API Reference// <div class="element" foo="bar">Hey</div> const el = doc.find(".element") el.text() // "Hey" el.html() // `<div class="element">Hey</div>` el.attr("foo") // "bar" el.hasAttr("foo") // true el.hasClass("element") // true // <ul> // <li class="a">Item 1</li> // <li>Item 2</li> // <li>Item 3</li> // </ul> const list = doc.find("ul") list.children() // [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] const items = list.find("li") items.length() // 3 items.first() // <li>Item 1</li> items.last() // <li>Item 3</li> items.get(1) // <li>Item 2</li> items."> - -<meta itemprop="wordCount" content="186"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="API Reference"/> -<meta name="twitter:description" content="Query API Reference// <div class="element" foo="bar">Hey</div> const el = doc.find(".element") el.text() // "Hey" el.html() // `<div class="element">Hey</div>` el.attr("foo") // "bar" el.hasAttr("foo") // true el.hasClass("element") // true // <ul> // <li class="a">Item 1</li> // <li>Item 2</li> // <li>Item 3</li> // </ul> const list = doc.find("ul") list.children() // [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] const items = list.find("li") items.length() // 3 items.first() // <li>Item 1</li> items.last() // <li>Item 3</li> items.get(1) // <li>Item 2</li> items."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/api-reference/" - - >API Reference - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#query-api" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Query API</a> - </li> - <li> - <a - href="#document-parsing" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Document Parsing</a> - </li> - <li> - <a - href="#file-downloads" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >File Downloads</a> - </li> - </ul> - - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#query-api">Query API - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#document-parsing">Document Parsing - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#file-downloads">File Downloads - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">API Reference</div> -</div> - - <div class="content"> - <h1>API Reference</h1> - <h2>Query API<span class="absolute -mt-20" id="query-api"></span> - <a href="#query-api" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="c1">// <div class="element" foo="bar">Hey</div> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">el</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".element"</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">el</span><span class="p">.</span><span class="nx">text</span><span class="p">()</span> <span class="c1">// "Hey" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">html</span><span class="p">()</span> <span class="c1">// `<div class="element">Hey</div>` -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"foo"</span><span class="p">)</span> <span class="c1">// "bar" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">hasAttr</span><span class="p">(</span><span class="s2">"foo"</span><span class="p">)</span> <span class="c1">// true -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="s2">"element"</span><span class="p">)</span> <span class="c1">// true -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="c1">// <ul> -</span></span></span><span class="line"><span class="cl"><span class="c1">// <li class="a">Item 1</li> -</span></span></span><span class="line"><span class="cl"><span class="c1">// <li>Item 2</li> -</span></span></span><span class="line"><span class="cl"><span class="c1">// <li>Item 3</li> -</span></span></span><span class="line"><span class="cl"><span class="c1">// </ul> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">list</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">"ul"</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">list</span><span class="p">.</span><span class="nx">children</span><span class="p">()</span> <span class="c1">// [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">items</span> <span class="o">=</span> <span class="nx">list</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">"li"</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">()</span> <span class="c1">// 3 -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">first</span><span class="p">()</span> <span class="c1">// <li>Item 1</li> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">last</span><span class="p">()</span> <span class="c1">// <li>Item 3</li> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1">// <li>Item 2</li> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">prev</span><span class="p">()</span> <span class="c1">// <li>Item 1</li> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">next</span><span class="p">()</span> <span class="c1">// <li>Item 3</li> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">parent</span><span class="p">()</span> <span class="c1">// <ul>...</ul> -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">siblings</span><span class="p">()</span> <span class="c1">// [<li class="a">Item 1</li>, <li>Item 2</li>, <li>Item 3</li>] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">item</span> <span class="p">=></span> <span class="nx">item</span><span class="p">.</span><span class="nx">text</span><span class="p">())</span> <span class="c1">// ["Item 1", "Item 2", "Item 3"] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">item</span> <span class="p">=></span> <span class="nx">item</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="s2">"a"</span><span class="p">))</span> <span class="c1">// [<li class="a">Item 1</li>] -</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Document Parsing<span class="absolute -mt-20" id="document-parsing"></span> - <a href="#document-parsing" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">parse</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">doc</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="sb">`<div class="foo">bar</div>`</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">text</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".foo"</span><span class="p">).</span><span class="nx">text</span><span class="p">();</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>File Downloads<span class="absolute -mt-20" id="file-downloads"></span> - <a href="#file-downloads" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">download</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape/http"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="nx">download</span><span class="p">(</span><span class="s2">"http://example.com/image.jpg"</span><span class="p">)</span> <span class="c1">// downloads as "image.jpg" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">"http://example.com/image.jpg"</span><span class="p">,</span> <span class="s2">"other.jpg"</span><span class="p">)</span> <span class="c1">// downloads as "other.jpg" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">"http://example.com/image.jpg"</span><span class="p">,</span> <span class="s2">"dir/"</span><span class="p">)</span> <span class="c1">// downloads as "dir/image.jpg" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="c1">// If the server offers a filename via the Content-Disposition header and no -</span></span></span><span class="line"><span class="cl"><span class="c1">// destination filename is provided, Flyscrape will honor the suggested filename. -</span></span></span><span class="line"><span class="cl"><span class="c1">// E.g. `Content-Disposition: attachment; filename="archive.zip"` -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">"http://example.com/generate_archive.php"</span><span class="p">,</span> <span class="s2">"dir/"</span><span class="p">)</span> <span class="c1">// downloads as "dir/archive.zip" -</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/full-example-script/" - title="Full Example Script" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Full Example Script</a><a - href="/docs/configuration/" - title="Configuration" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Configuration<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/browser-mode/index.html b/public/docs/configuration/browser-mode/index.html deleted file mode 100644 index 123458e..0000000 --- a/public/docs/configuration/browser-mode/index.html +++ /dev/null @@ -1,612 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Browser Mode – Flyscrape</title> - <meta name="description" content="The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows flyscrape to download a Chromium browser once and use it to render JavaScript-heavy pages. -Browser Mode To enable Browser Mode, set the browser option to true in your configuration. This allows flyscrape to use a headless Chromium browser for rendering JavaScript during the scraping process. -Configurationexport const config = { browser: true, }; In the above example, Browser Mode is enabled, allowing flyscrape to render pages that rely on JavaScript execution." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/browser-mode/" itemprop="url" /> - - - - -<meta property="og:title" content="Browser Mode" /> -<meta property="og:description" content="The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows flyscrape to download a Chromium browser once and use it to render JavaScript-heavy pages. -Browser Mode To enable Browser Mode, set the browser option to true in your configuration. This allows flyscrape to use a headless Chromium browser for rendering JavaScript during the scraping process. -Configurationexport const config = { browser: true, }; In the above example, Browser Mode is enabled, allowing flyscrape to render pages that rely on JavaScript execution." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/browser-mode/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Browser Mode"> -<meta itemprop="description" content="The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows flyscrape to download a Chromium browser once and use it to render JavaScript-heavy pages. -Browser Mode To enable Browser Mode, set the browser option to true in your configuration. This allows flyscrape to use a headless Chromium browser for rendering JavaScript during the scraping process. -Configurationexport const config = { browser: true, }; In the above example, Browser Mode is enabled, allowing flyscrape to render pages that rely on JavaScript execution."> - -<meta itemprop="wordCount" content="191"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Browser Mode"/> -<meta name="twitter:description" content="The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows flyscrape to download a Chromium browser once and use it to render JavaScript-heavy pages. -Browser Mode To enable Browser Mode, set the browser option to true in your configuration. This allows flyscrape to use a headless Chromium browser for rendering JavaScript during the scraping process. -Configurationexport const config = { browser: true, }; In the above example, Browser Mode is enabled, allowing flyscrape to render pages that rely on JavaScript execution."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#browser-mode" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Browser Mode</a> - </li> - <li> - <a - href="#headless-option" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Headless Option</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#browser-mode">Browser Mode - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#headless-option">Headless Option - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Browser Mode</div> -</div> - - <div class="content"> - <h1>Browser Mode</h1> - <p>The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows <code>flyscrape</code> to download a Chromium browser once and use it to render JavaScript-heavy pages.</p> -<h2>Browser Mode<span class="absolute -mt-20" id="browser-mode"></span> - <a href="#browser-mode" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To enable Browser Mode, set the <code>browser</code> option to <code>true</code> in your configuration. This allows <code>flyscrape</code> to use a headless Chromium browser for rendering JavaScript during the scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, Browser Mode is enabled, allowing <code>flyscrape</code> to render pages that rely on JavaScript execution.</p> -<h2>Headless Option<span class="absolute -mt-20" id="headless-option"></span> - <a href="#headless-option" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The <code>headless</code> option, when combined with Browser Mode, controls whether the Chromium browser should run in headless mode or not. Headless mode means the browser operates without a graphical user interface, which can be useful for background processes.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in non-headless mode. If you set <code>headless</code> to <code>true</code>, the browser will run without a visible GUI.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in headless mode, suitable for scenarios where graphical rendering is unnecessary.</p> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/headers/" - title="Headers" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Headers</a><a - href="/docs/configuration/output/" - title="Output File and Format" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Output File and Format<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/caching/index.html b/public/docs/configuration/caching/index.html deleted file mode 100644 index 127eb18..0000000 --- a/public/docs/configuration/caching/index.html +++ /dev/null @@ -1,604 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Caching – Flyscrape</title> - <meta name="description" content="The cache config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache. -This also allows you to modify your scraping script afterwards and collect new results immediately. -Configurationexport const config = { url: "http://example.com/", cache: "file", // ... }; Cache File When caching is enabled using the cache: "file" option, a ." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/caching/" itemprop="url" /> - - - - -<meta property="og:title" content="Caching" /> -<meta property="og:description" content="The cache config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache. -This also allows you to modify your scraping script afterwards and collect new results immediately. -Configurationexport const config = { url: "http://example.com/", cache: "file", // ... }; Cache File When caching is enabled using the cache: "file" option, a ." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/caching/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Caching"> -<meta itemprop="description" content="The cache config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache. -This also allows you to modify your scraping script afterwards and collect new results immediately. -Configurationexport const config = { url: "http://example.com/", cache: "file", // ... }; Cache File When caching is enabled using the cache: "file" option, a ."> - -<meta itemprop="wordCount" content="131"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Caching"/> -<meta name="twitter:description" content="The cache config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache. -This also allows you to modify your scraping script afterwards and collect new results immediately. -Configurationexport const config = { url: "http://example.com/", cache: "file", // ... }; Cache File When caching is enabled using the cache: "file" option, a ."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/caching/" - - >Caching - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - ></a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#cache-file">Cache File - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#shared-cache">Shared cache - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Caching</div> -</div> - - <div class="content"> - <h1>Caching</h1> - <p>The <code>cache</code> config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache.</p> -<p>This also allows you to modify your scraping script afterwards and collect new results immediately.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">"file"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Cache File<span class="absolute -mt-20" id="cache-file"></span> - <a href="#cache-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>When caching is enabled using the <code>cache: "file"</code> option, a <code>.cache</code> file will be created with the name of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ flyscrape run hackernews.js <span class="c1"># Will populate: hackernews.cache</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Shared cache<span class="absolute -mt-20" id="shared-cache"></span> - <a href="#shared-cache" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In case you want to share a cache between different scraping scripts, you can specify where to store the cache file.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">"file:/some/path/shared.cache"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/retry/" - title="Retry" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Retry</a><a - href="/docs/configuration/proxies/" - title="Proxies" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Proxies<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/concurrency/index.html b/public/docs/configuration/concurrency/index.html deleted file mode 100644 index 0047445..0000000 --- a/public/docs/configuration/concurrency/index.html +++ /dev/null @@ -1,560 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Concurrency – Flyscrape</title> - <meta name="description" content="The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script. -export const config = { // Specify the number of concurrent requests. concurrency: 5, }; In the above example, the scraper will make up to 5 requests at the same time. -If the concurrency setting is not specified, there is no limit to the number of concurrent requests." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/concurrency/" itemprop="url" /> - - - - -<meta property="og:title" content="Concurrency" /> -<meta property="og:description" content="The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script. -export const config = { // Specify the number of concurrent requests. concurrency: 5, }; In the above example, the scraper will make up to 5 requests at the same time. -If the concurrency setting is not specified, there is no limit to the number of concurrent requests." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/concurrency/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Concurrency"> -<meta itemprop="description" content="The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script. -export const config = { // Specify the number of concurrent requests. concurrency: 5, }; In the above example, the scraper will make up to 5 requests at the same time. -If the concurrency setting is not specified, there is no limit to the number of concurrent requests."> - -<meta itemprop="wordCount" content="73"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Concurrency"/> -<meta name="twitter:description" content="The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script. -export const config = { // Specify the number of concurrent requests. concurrency: 5, }; In the above example, the scraper will make up to 5 requests at the same time. -If the concurrency setting is not specified, there is no limit to the number of concurrent requests."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Concurrency</div> -</div> - - <div class="content"> - <h1>Concurrency</h1> - <p>The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraper will make up to 5 requests at the same time.</p> -<p>If the concurrency setting is not specified, there is no limit to the number of concurrent requests.</p> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/link-following/" - title="Link Following" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Link Following</a><a - href="/docs/configuration/rate-limiting/" - title="Rate Limiting" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Rate Limiting<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/cookies/index.html b/public/docs/configuration/cookies/index.html deleted file mode 100644 index d514e9b..0000000 --- a/public/docs/configuration/cookies/index.html +++ /dev/null @@ -1,595 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Cookies – Flyscrape</title> - <meta name="description" content="The Cookies configuration in the flyscrape script’s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites. -Cookies Configuration To configure the cookie store behavior, set the cookies field in your configuration. The cookies option supports three values: "chrome", "edge", and "firefox". Each value corresponds to using the cookie store of the respective local browser." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/cookies/" itemprop="url" /> - - - - -<meta property="og:title" content="Cookies" /> -<meta property="og:description" content="The Cookies configuration in the flyscrape script’s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites. -Cookies Configuration To configure the cookie store behavior, set the cookies field in your configuration. The cookies option supports three values: "chrome", "edge", and "firefox". Each value corresponds to using the cookie store of the respective local browser." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/cookies/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Cookies"> -<meta itemprop="description" content="The Cookies configuration in the flyscrape script’s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites. -Cookies Configuration To configure the cookie store behavior, set the cookies field in your configuration. The cookies option supports three values: "chrome", "edge", and "firefox". Each value corresponds to using the cookie store of the respective local browser."> - -<meta itemprop="wordCount" content="186"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Cookies"/> -<meta name="twitter:description" content="The Cookies configuration in the flyscrape script’s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites. -Cookies Configuration To configure the cookie store behavior, set the cookies field in your configuration. The cookies option supports three values: "chrome", "edge", and "firefox". Each value corresponds to using the cookie store of the respective local browser."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#cookies-configuration" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Cookies Configuration</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#cookies-configuration">Cookies Configuration - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Cookies</div> -</div> - - <div class="content"> - <h1>Cookies</h1> - <p>The Cookies configuration in the <code>flyscrape</code> script’s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites.</p> -<h2>Cookies Configuration<span class="absolute -mt-20" id="cookies-configuration"></span> - <a href="#cookies-configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To configure the cookie store behavior, set the <code>cookies</code> field in your configuration. The <code>cookies</code> option supports three values: <code>"chrome"</code>, <code>"edge"</code>, and <code>"firefox"</code>. Each value corresponds to using the cookie store of the respective local browser.</p> -<p>When the <code>cookies</code> option is set to <code>"chrome"</code>, <code>"edge"</code>, or <code>"firefox"</code>, <code>flyscrape</code> utilizes the cookie store of the user’s installed browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">"chrome"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the <code>cookies</code> option is set to <code>"chrome"</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Chrome browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">"firefox"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>"firefox"</code>, instructing <code>flyscrape</code> to use the cookie store of the local Firefox browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">"edge"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>"edge"</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Edge browser.</p> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/proxies/" - title="Proxies" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Proxies</a><a - href="/docs/configuration/headers/" - title="Headers" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Headers<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/depth/index.html b/public/docs/configuration/depth/index.html deleted file mode 100644 index ac94970..0000000 --- a/public/docs/configuration/depth/index.html +++ /dev/null @@ -1,577 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Depth – Flyscrape</title> - <meta name="description" content="The depth config option allows you to specify how deep the scraping process should follow links from the initial URL. -When no value is provided or depth is set to 0 link following is disabled and it will only scrape the initial URL. -Configurationexport const config = { url: "http://example.com/", depth: 2, // ... }; With the config provided in the example the scraper would follow links like this: -http://example.com/ (depth = 0, initial URL) ↳ http://example." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/depth/" itemprop="url" /> - - - - -<meta property="og:title" content="Depth" /> -<meta property="og:description" content="The depth config option allows you to specify how deep the scraping process should follow links from the initial URL. -When no value is provided or depth is set to 0 link following is disabled and it will only scrape the initial URL. -Configurationexport const config = { url: "http://example.com/", depth: 2, // ... }; With the config provided in the example the scraper would follow links like this: -http://example.com/ (depth = 0, initial URL) ↳ http://example." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/depth/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Depth"> -<meta itemprop="description" content="The depth config option allows you to specify how deep the scraping process should follow links from the initial URL. -When no value is provided or depth is set to 0 link following is disabled and it will only scrape the initial URL. -Configurationexport const config = { url: "http://example.com/", depth: 2, // ... }; With the config provided in the example the scraper would follow links like this: -http://example.com/ (depth = 0, initial URL) ↳ http://example."> - -<meta itemprop="wordCount" content="85"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Depth"/> -<meta name="twitter:description" content="The depth config option allows you to specify how deep the scraping process should follow links from the initial URL. -When no value is provided or depth is set to 0 link following is disabled and it will only scrape the initial URL. -Configurationexport const config = { url: "http://example.com/", depth: 2, // ... }; With the config provided in the example the scraper would follow links like this: -http://example.com/ (depth = 0, initial URL) ↳ http://example."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/depth/" - - >Depth - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Depth</div> -</div> - - <div class="content"> - <h1>Depth</h1> - <p>The <code>depth</code> config option allows you to specify how deep the scraping process should follow links from the initial URL.</p> -<p>When no value is provided or <code>depth</code> is set to <code>0</code> link following is disabled and it will only scrape the initial URL.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">depth</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>With the config provided in the example the scraper would follow links like this:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><pre><code>http://example.com/ (depth = 0, initial URL) -↳ http://example.com/deeply (depth = 1) - ↳ http://example.com/deeply/nested (depth = 2)</code></pre><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/starting-url/" - title="Starting URL" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Starting URL</a><a - href="/docs/configuration/domain-filter/" - title="Domain Filter" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Domain Filter<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/domain-filter/index.html b/public/docs/configuration/domain-filter/index.html deleted file mode 100644 index 482211f..0000000 --- a/public/docs/configuration/domain-filter/index.html +++ /dev/null @@ -1,616 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Domain Filter – Flyscrape</title> - <meta name="description" content="The allowedDomains and blockedDomains config options allow you to specify a list of domains which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedDomains: ["subdomain.example.com"], // ... }; Allowed Domains This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed. -You can also allow all domains to be accessible by setting allowedDomains to ["*"]." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/domain-filter/" itemprop="url" /> - - - - -<meta property="og:title" content="Domain Filter" /> -<meta property="og:description" content="The allowedDomains and blockedDomains config options allow you to specify a list of domains which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedDomains: ["subdomain.example.com"], // ... }; Allowed Domains This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed. -You can also allow all domains to be accessible by setting allowedDomains to ["*"]." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/domain-filter/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Domain Filter"> -<meta itemprop="description" content="The allowedDomains and blockedDomains config options allow you to specify a list of domains which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedDomains: ["subdomain.example.com"], // ... }; Allowed Domains This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed. -You can also allow all domains to be accessible by setting allowedDomains to ["*"]."> - -<meta itemprop="wordCount" content="164"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Domain Filter"/> -<meta name="twitter:description" content="The allowedDomains and blockedDomains config options allow you to specify a list of domains which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedDomains: ["subdomain.example.com"], // ... }; Allowed Domains This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed. -You can also allow all domains to be accessible by setting allowedDomains to ["*"]."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#allowed-domains" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Allowed Domains</a> - </li> - <li> - <a - href="#blocked-domains" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Blocked Domains</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#allowed-domains">Allowed Domains - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#blocked-domains">Blocked Domains - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Domain Filter</div> -</div> - - <div class="content"> - <h1>Domain Filter</h1> - <p>The <code>allowedDomains</code> and <code>blockedDomains</code> config options allow you to specify a list of domains which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"subdomain.example.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed Domains<span class="absolute -mt-20" id="allowed-domains"></span> - <a href="#allowed-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed.</p> -<p>You can also allow all domains to be accessible by setting <code>allowedDomains</code> to <code>["*"]</code>. To then further restrict access, you can specify <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"*"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked Domains<span class="absolute -mt-20" id="blocked-domains"></span> - <a href="#blocked-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are blocked from being accessed. By default all domains other than the domain of the initial URL or those specified in <code>allowedDomains</code> are blocked.</p> -<p>You can best use <code>blockedDomains</code> in conjunction with <code>allowedDomains: ["*"]</code>, allowing the scraping process to access all domains except what’s specified in <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"*"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"google.com"</span><span class="p">,</span> <span class="s2">"bing.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/depth/" - title="Depth" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Depth</a><a - href="/docs/configuration/url-filter/" - title="URL Filter" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >URL Filter<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/headers/index.html b/public/docs/configuration/headers/index.html deleted file mode 100644 index b4e034f..0000000 --- a/public/docs/configuration/headers/index.html +++ /dev/null @@ -1,557 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Headers – Flyscrape</title> - <meta name="description" content="The headers config option allows you to specify the custom HTTP headers sent with each request. -Configurationexport const config = { headers: { "Authorization": "Bearer ey....", "User-Agent": "Mozilla/5.0 (Macintosh ...", }, // ... }; " /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/headers/" itemprop="url" /> - - - - -<meta property="og:title" content="Headers" /> -<meta property="og:description" content="The headers config option allows you to specify the custom HTTP headers sent with each request. -Configurationexport const config = { headers: { "Authorization": "Bearer ey....", "User-Agent": "Mozilla/5.0 (Macintosh ...", }, // ... }; " /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/headers/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Headers"> -<meta itemprop="description" content="The headers config option allows you to specify the custom HTTP headers sent with each request. -Configurationexport const config = { headers: { "Authorization": "Bearer ey....", "User-Agent": "Mozilla/5.0 (Macintosh ...", }, // ... }; "> - -<meta itemprop="wordCount" content="34"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Headers"/> -<meta name="twitter:description" content="The headers config option allows you to specify the custom HTTP headers sent with each request. -Configurationexport const config = { headers: { "Authorization": "Bearer ey....", "User-Agent": "Mozilla/5.0 (Macintosh ...", }, // ... }; "/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/headers/" - - >Headers - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Headers</div> -</div> - - <div class="content"> - <h1>Headers</h1> - <p>The <code>headers</code> config option allows you to specify the custom HTTP headers sent with each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"Authorization"</span><span class="o">:</span> <span class="s2">"Bearer ey...."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"User-Agent"</span><span class="o">:</span> <span class="s2">"Mozilla/5.0 (Macintosh ..."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/cookies/" - title="Cookies" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Cookies</a><a - href="/docs/configuration/browser-mode/" - title="Browser Mode" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Browser Mode<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/index.html b/public/docs/configuration/index.html deleted file mode 100644 index 75a7649..0000000 --- a/public/docs/configuration/index.html +++ /dev/null @@ -1,561 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Configuration – Flyscrape</title> - <meta name="description" content=" Starting URL Depth Domain Filter URL Filter Link Following Concurrency Rate Limiting Retry Caching Proxies Cookies Headers Browser Mode Output File and Format " /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/" itemprop="url" /> - - - - -<meta property="og:title" content="Configuration" /> -<meta property="og:description" content="A modern toolkit for building custom scrapers in minutes." /> -<meta property="og:type" content="website" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/" /> - - <meta itemprop="name" content="Configuration"> -<meta itemprop="description" content="A modern toolkit for building custom scrapers in minutes."><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Configuration"/> -<meta name="twitter:description" content="A modern toolkit for building custom scrapers in minutes."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Configuration</div> -</div> - - <div class="content"> - <h1>Configuration</h1> - - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="starting-url" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/><path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>Starting URL</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="depth" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M19 14l-7 7m0 0l-7-7m7 7V3"/></svg>Depth</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="domain-filter" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M14 10l-2 1m0 0l-2-1m2 1v2.5M20 7l-2 1m2-1l-2-1m2 1v2.5M14 4l-2-1-2 1M4 7l2-1M4 7l2 1M4 7v2.5M12 21l-2-1m2 1l2-1m-2 1v-2.5M6 18l-2-1v-2.5M18 18l2-1v-2.5"/></svg>Domain Filter</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="url-filter" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z"/></svg>URL Filter</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="link-following" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/></svg>Link Following</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="concurrency" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"/></svg>Concurrency</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="rate-limiting" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M16 8v8m-4-5v5m-4-2v2m-2 4h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/></svg>Rate Limiting</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="retry" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/></svg>Retry</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="caching" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"/></svg>Caching</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="proxies" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/></svg>Proxies</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="cookies" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 11c0 3.517-1.009 6.799-2.753 9.571m-3.44-2.04l.054-.09A13.916 13.916 0 008 11a4 4 0 118 0c0 1.017-.07 2.019-.203 3m-2.118 6.844A21.88 21.88 0 0015.171 17m3.839 1.132c.645-2.266.99-4.659.99-7.132A8 8 0 008 4.07M3 15.364c.64-1.319 1-2.8 1-4.364 0-1.457.39-2.823 1.07-4"/></svg>Cookies</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="headers" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"/></svg>Headers</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="browser-mode" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg>Browser Mode</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="output" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M8 13v-1m4 1v-3m4 3V8M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"/></svg>Output File and Format</span></a> -</div> - - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/api-reference/" - title="API Reference" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>API Reference</a><a - href="/docs/configuration/starting-url/" - title="Starting URL" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Starting URL<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/index.xml b/public/docs/configuration/index.xml deleted file mode 100644 index 85c2f0d..0000000 --- a/public/docs/configuration/index.xml +++ /dev/null @@ -1,686 +0,0 @@ -<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> - <channel> - <title>Flyscrape – Configuration</title> - <link>https://flyscrape.com/docs/configuration/</link> - <description>Recent content in Configuration on Flyscrape</description> - <generator>Hugo -- gohugo.io</generator> - <language>en-us</language> - - <atom:link href="https://flyscrape.com/docs/configuration/index.xml" rel="self" type="application/rss+xml" /> - - - - - - - - <item> - <title>Starting URL</title> - <link>https://flyscrape.com/docs/configuration/starting-url/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/starting-url/</guid> - <description> - - - <p>The <code>url</code> config option allows you to specify the initial URL at which the scraper should start its scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Multiple starting URLs<span class="absolute -mt-20" id="multiple-starting-urls"></span> - <a href="#multiple-starting-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In case you have more than one URL you want to scrape (or to start from) you can specify them with the <code>urls</code> config option.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://anothersite.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://yetanothersite.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Depth</title> - <link>https://flyscrape.com/docs/configuration/depth/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/depth/</guid> - <description> - - - <p>The <code>depth</code> config option allows you to specify how deep the scraping process should follow links from the initial URL.</p> -<p>When no value is provided or <code>depth</code> is set to <code>0</code> link following is disabled and it will only scrape the initial URL.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">depth</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>With the config provided in the example the scraper would follow links like this:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><pre><code>http://example.com/ (depth = 0, initial URL) -↳ http://example.com/deeply (depth = 1) - ↳ http://example.com/deeply/nested (depth = 2)</code></pre><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Domain Filter</title> - <link>https://flyscrape.com/docs/configuration/domain-filter/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/domain-filter/</guid> - <description> - - - <p>The <code>allowedDomains</code> and <code>blockedDomains</code> config options allow you to specify a list of domains which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;subdomain.example.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed Domains<span class="absolute -mt-20" id="allowed-domains"></span> - <a href="#allowed-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed.</p> -<p>You can also allow all domains to be accessible by setting <code>allowedDomains</code> to <code>[&quot;*&quot;]</code>. To then further restrict access, you can specify <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked Domains<span class="absolute -mt-20" id="blocked-domains"></span> - <a href="#blocked-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are blocked from being accessed. By default all domains other than the domain of the initial URL or those specified in <code>allowedDomains</code> are blocked.</p> -<p>You can best use <code>blockedDomains</code> in conjunction with <code>allowedDomains: [&quot;*&quot;]</code>, allowing the scraping process to access all domains except what&rsquo;s specified in <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;google.com&#34;</span><span class="p">,</span> <span class="s2">&#34;bing.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>URL Filter</title> - <link>https://flyscrape.com/docs/configuration/url-filter/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/url-filter/</guid> - <description> - - - <p>The <code>allowedURLs</code> and <code>blockedURLs</code> config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/articles/.*&#34;</span><span class="p">,</span> <span class="s2">&#34;/authors/.*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/authors/admin&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed URLs<span class="absolute -mt-20" id="allowed-urls"></span> - <a href="#allowed-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked.</p> -<p>When a list of URL patterns is provided, only URLs matching one or more of these patterns are allowed to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/products/&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked URLs<span class="absolute -mt-20" id="blocked-urls"></span> - <a href="#blocked-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are blocked from being visted during scraping.</p> -<p>When a list of URL patterns is provided, URLs matching one or more of these patterns are blocked from to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/restricted&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Link Following</title> - <link>https://flyscrape.com/docs/configuration/link-following/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/link-following/</guid> - <description> - - - <p>The <code>follow</code> config option allows you to specify a list of CSS selectors that determine which links the scraper should follow.</p> -<p>When no value is provided the scraper will follow all links found with the <code>a[href]</code> selector.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.pagination &gt; a[href]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.nav a[href]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Following non <code>href</code> attributes<span class="absolute -mt-20" id="following-non-href-attributes"></span> - <a href="#following-non-href-attributes" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For special cases where the link is not to be found in the <code>href</code>, you specify a selector with a different ending attribute.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.articles &gt; div[data-url]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Concurrency</title> - <link>https://flyscrape.com/docs/configuration/concurrency/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/concurrency/</guid> - <description> - - - <p>The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraper will make up to 5 requests at the same time.</p> -<p>If the concurrency setting is not specified, there is no limit to the number of concurrent requests.</p> - - </description> - </item> - - <item> - <title>Rate Limiting</title> - <link>https://flyscrape.com/docs/configuration/rate-limiting/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/rate-limiting/</guid> - <description> - - - <p>The <code>rate</code> config option allows you to specify at which rate the scraper should send out requests. The rate is measured in <em>Requests per Minute</em> (RPM).</p> -<p>When no <code>rate</code> is specified, rate limiting is disabled and the scraper will send out requests as fast as it can.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">rate</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Retry</title> - <link>https://flyscrape.com/docs/configuration/retry/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/retry/</guid> - <description> - - - <p>The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes.</p> -<p>The retry feature is automatically enabled and will retry requests that return the following HTTP status codes:</p> -<ul> -<li>403 Forbidden</li> -<li>408 Request Timeout</li> -<li>425 Too Early</li> -<li>429 Too Many Requests</li> -<li>500 Internal Server Error</li> -<li>502 Bad Gateway</li> -<li>503 Service Unavailable</li> -<li>504 Gateway Timeout</li> -</ul> -<h3>Retry Delays<span class="absolute -mt-20" id="retry-delays"></span> - <a href="#retry-delays" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>After a failed request, the scraper will wait for a certain amount of time before retrying the request. The delay increases with each consecutive failed attempt, according to the following schedule:</p> -<ul> -<li>1st retry: 1 second delay</li> -<li>2nd retry: 2 seconds delay</li> -<li>3rd retry: 5 seconds delay</li> -<li>4th retry: 10 seconds delay</li> -</ul> - - </description> - </item> - - <item> - <title>Caching</title> - <link>https://flyscrape.com/docs/configuration/caching/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/caching/</guid> - <description> - - - <p>The <code>cache</code> config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache.</p> -<p>This also allows you to modify your scraping script afterwards and collect new results immediately.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">&#34;file&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Cache File<span class="absolute -mt-20" id="cache-file"></span> - <a href="#cache-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>When caching is enabled using the <code>cache: &quot;file&quot;</code> option, a <code>.cache</code> file will be created with the name of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ flyscrape run hackernews.js <span class="c1"># Will populate: hackernews.cache</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Shared cache<span class="absolute -mt-20" id="shared-cache"></span> - <a href="#shared-cache" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In case you want to share a cache between different scraping scripts, you can specify where to store the cache file.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">&#34;file:/some/path/shared.cache&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Proxies</title> - <link>https://flyscrape.com/docs/configuration/proxies/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/proxies/</guid> - <description> - - - <p>The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, all scraping requests will be routed through the proxy at <code>http://someproxy.com:8043</code>.</p> -<h2>Multiple Proxies<span class="absolute -mt-20" id="multiple-proxies"></span> - <a href="#multiple-proxies" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someotherproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraper will randomly pick between the proxies at <code>http://someproxy.com:8043</code> and <code>http://someotherproxy.com:8043</code>.</p> -<p>Note: If both <code>proxy</code> and <code>proxies</code> are specified, all proxies will be respected.</p> - - </description> - </item> - - <item> - <title>Cookies</title> - <link>https://flyscrape.com/docs/configuration/cookies/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/cookies/</guid> - <description> - - - <p>The Cookies configuration in the <code>flyscrape</code> script&rsquo;s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites.</p> -<h2>Cookies Configuration<span class="absolute -mt-20" id="cookies-configuration"></span> - <a href="#cookies-configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To configure the cookie store behavior, set the <code>cookies</code> field in your configuration. The <code>cookies</code> option supports three values: <code>&quot;chrome&quot;</code>, <code>&quot;edge&quot;</code>, and <code>&quot;firefox&quot;</code>. Each value corresponds to using the cookie store of the respective local browser.</p> -<p>When the <code>cookies</code> option is set to <code>&quot;chrome&quot;</code>, <code>&quot;edge&quot;</code>, or <code>&quot;firefox&quot;</code>, <code>flyscrape</code> utilizes the cookie store of the user&rsquo;s installed browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;chrome&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the <code>cookies</code> option is set to <code>&quot;chrome&quot;</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Chrome browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;firefox&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>&quot;firefox&quot;</code>, instructing <code>flyscrape</code> to use the cookie store of the local Firefox browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;edge&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>&quot;edge&quot;</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Edge browser.</p> - - </description> - </item> - - <item> - <title>Headers</title> - <link>https://flyscrape.com/docs/configuration/headers/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/headers/</guid> - <description> - - - <p>The <code>headers</code> config option allows you to specify the custom HTTP headers sent with each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;Authorization&#34;</span><span class="o">:</span> <span class="s2">&#34;Bearer ey....&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;User-Agent&#34;</span><span class="o">:</span> <span class="s2">&#34;Mozilla/5.0 (Macintosh ...&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Browser Mode</title> - <link>https://flyscrape.com/docs/configuration/browser-mode/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/browser-mode/</guid> - <description> - - - <p>The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows <code>flyscrape</code> to download a Chromium browser once and use it to render JavaScript-heavy pages.</p> -<h2>Browser Mode<span class="absolute -mt-20" id="browser-mode"></span> - <a href="#browser-mode" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To enable Browser Mode, set the <code>browser</code> option to <code>true</code> in your configuration. This allows <code>flyscrape</code> to use a headless Chromium browser for rendering JavaScript during the scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, Browser Mode is enabled, allowing <code>flyscrape</code> to render pages that rely on JavaScript execution.</p> -<h2>Headless Option<span class="absolute -mt-20" id="headless-option"></span> - <a href="#headless-option" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The <code>headless</code> option, when combined with Browser Mode, controls whether the Chromium browser should run in headless mode or not. Headless mode means the browser operates without a graphical user interface, which can be useful for background processes.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in non-headless mode. If you set <code>headless</code> to <code>true</code>, the browser will run without a visible GUI.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in headless mode, suitable for scenarios where graphical rendering is unnecessary.</p> - - </description> - </item> - - <item> - <title>Output File and Format</title> - <link>https://flyscrape.com/docs/configuration/output/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/output/</guid> - <description> - - - <p>The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format.</p> -<h2>Output File<span class="absolute -mt-20" id="output-file"></span> - <a href="#output-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout).</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">&#34;results.json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in a file named <code>results.json</code>.</p> -<h2>Output Format<span class="absolute -mt-20" id="output-format"></span> - <a href="#output-format" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output format is the format in which the scraped data will be saved. The options are <code>json</code> and <code>ndjson</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">&#34;json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in JSON format.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">&#34;ndjson&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraped data will be saved in newline-delimited JSON (NDJSON) format. Each line in the output file will be a separate JSON object.</p> - - </description> - </item> - - </channel> -</rss> diff --git a/public/docs/configuration/link-following/index.html b/public/docs/configuration/link-following/index.html deleted file mode 100644 index 46434c3..0000000 --- a/public/docs/configuration/link-following/index.html +++ /dev/null @@ -1,593 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Link Following – Flyscrape</title> - <meta name="description" content="The follow config option allows you to specify a list of CSS selectors that determine which links the scraper should follow. -When no value is provided the scraper will follow all links found with the a[href] selector. -Configurationexport const config = { url: "http://example.com/", follow: [ ".pagination > a[href]", ".nav a[href]", ], // ... }; Following non href attributes For special cases where the link is not to be found in the href, you specify a selector with a different ending attribute." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/link-following/" itemprop="url" /> - - - - -<meta property="og:title" content="Link Following" /> -<meta property="og:description" content="The follow config option allows you to specify a list of CSS selectors that determine which links the scraper should follow. -When no value is provided the scraper will follow all links found with the a[href] selector. -Configurationexport const config = { url: "http://example.com/", follow: [ ".pagination > a[href]", ".nav a[href]", ], // ... }; Following non href attributes For special cases where the link is not to be found in the href, you specify a selector with a different ending attribute." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/link-following/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Link Following"> -<meta itemprop="description" content="The follow config option allows you to specify a list of CSS selectors that determine which links the scraper should follow. -When no value is provided the scraper will follow all links found with the a[href] selector. -Configurationexport const config = { url: "http://example.com/", follow: [ ".pagination > a[href]", ".nav a[href]", ], // ... }; Following non href attributes For special cases where the link is not to be found in the href, you specify a selector with a different ending attribute."> - -<meta itemprop="wordCount" content="98"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Link Following"/> -<meta name="twitter:description" content="The follow config option allows you to specify a list of CSS selectors that determine which links the scraper should follow. -When no value is provided the scraper will follow all links found with the a[href] selector. -Configurationexport const config = { url: "http://example.com/", follow: [ ".pagination > a[href]", ".nav a[href]", ], // ... }; Following non href attributes For special cases where the link is not to be found in the href, you specify a selector with a different ending attribute."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#following-non-href-attributes" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Following non <code>href</code> attributes</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#following-non-href-attributes">Following non href attributes - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Link Following</div> -</div> - - <div class="content"> - <h1>Link Following</h1> - <p>The <code>follow</code> config option allows you to specify a list of CSS selectors that determine which links the scraper should follow.</p> -<p>When no value is provided the scraper will follow all links found with the <code>a[href]</code> selector.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">".pagination > a[href]"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">".nav a[href]"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Following non <code>href</code> attributes<span class="absolute -mt-20" id="following-non-href-attributes"></span> - <a href="#following-non-href-attributes" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For special cases where the link is not to be found in the <code>href</code>, you specify a selector with a different ending attribute.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">".articles > div[data-url]"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/url-filter/" - title="URL Filter" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>URL Filter</a><a - href="/docs/configuration/concurrency/" - title="Concurrency" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Concurrency<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/output/index.html b/public/docs/configuration/output/index.html deleted file mode 100644 index 4d90b23..0000000 --- a/public/docs/configuration/output/index.html +++ /dev/null @@ -1,615 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Output File and Format – Flyscrape</title> - <meta name="description" content="The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format. -Output File The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout). -Configurationexport const config = { output: { // Specify the output file. file: "results.json", }, }; In the above example, the scraped data will be saved in a file named results." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/output/" itemprop="url" /> - - - - -<meta property="og:title" content="Output File and Format" /> -<meta property="og:description" content="The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format. -Output File The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout). -Configurationexport const config = { output: { // Specify the output file. file: "results.json", }, }; In the above example, the scraped data will be saved in a file named results." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/output/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Output File and Format"> -<meta itemprop="description" content="The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format. -Output File The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout). -Configurationexport const config = { output: { // Specify the output file. file: "results.json", }, }; In the above example, the scraped data will be saved in a file named results."> - -<meta itemprop="wordCount" content="180"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Output File and Format"/> -<meta name="twitter:description" content="The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format. -Output File The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout). -Configurationexport const config = { output: { // Specify the output file. file: "results.json", }, }; In the above example, the scraped data will be saved in a file named results."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#output-file" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Output File</a> - </li> - <li> - <a - href="#output-format" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Output Format</a> - </li> - </ul> - - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#output-file">Output File - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#output-format">Output Format - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Output File and Format</div> -</div> - - <div class="content"> - <h1>Output File and Format</h1> - <p>The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format.</p> -<h2>Output File<span class="absolute -mt-20" id="output-file"></span> - <a href="#output-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout).</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">"results.json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in a file named <code>results.json</code>.</p> -<h2>Output Format<span class="absolute -mt-20" id="output-format"></span> - <a href="#output-format" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output format is the format in which the scraped data will be saved. The options are <code>json</code> and <code>ndjson</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">"json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in JSON format.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">"ndjson"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraped data will be saved in newline-delimited JSON (NDJSON) format. Each line in the output file will be a separate JSON object.</p> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/browser-mode/" - title="Browser Mode" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Browser Mode</a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/proxies/index.html b/public/docs/configuration/proxies/index.html deleted file mode 100644 index 3a43ad5..0000000 --- a/public/docs/configuration/proxies/index.html +++ /dev/null @@ -1,591 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Proxies – Flyscrape</title> - <meta name="description" content="The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content. -export const config = { // Specify a single HTTP(S) proxy URL. proxy: "http://someproxy.com:8043", }; In the above example, all scraping requests will be routed through the proxy at http://someproxy.com:8043. -Multiple Proxies You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/proxies/" itemprop="url" /> - - - - -<meta property="og:title" content="Proxies" /> -<meta property="og:description" content="The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content. -export const config = { // Specify a single HTTP(S) proxy URL. proxy: "http://someproxy.com:8043", }; In the above example, all scraping requests will be routed through the proxy at http://someproxy.com:8043. -Multiple Proxies You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/proxies/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Proxies"> -<meta itemprop="description" content="The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content. -export const config = { // Specify a single HTTP(S) proxy URL. proxy: "http://someproxy.com:8043", }; In the above example, all scraping requests will be routed through the proxy at http://someproxy.com:8043. -Multiple Proxies You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request."> - -<meta itemprop="wordCount" content="122"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Proxies"/> -<meta name="twitter:description" content="The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content. -export const config = { // Specify a single HTTP(S) proxy URL. proxy: "http://someproxy.com:8043", }; In the above example, all scraping requests will be routed through the proxy at http://someproxy.com:8043. -Multiple Proxies You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#multiple-proxies" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Multiple Proxies</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#multiple-proxies">Multiple Proxies - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Proxies</div> -</div> - - <div class="content"> - <h1>Proxies</h1> - <p>The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, all scraping requests will be routed through the proxy at <code>http://someproxy.com:8043</code>.</p> -<h2>Multiple Proxies<span class="absolute -mt-20" id="multiple-proxies"></span> - <a href="#multiple-proxies" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someotherproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraper will randomly pick between the proxies at <code>http://someproxy.com:8043</code> and <code>http://someotherproxy.com:8043</code>.</p> -<p>Note: If both <code>proxy</code> and <code>proxies</code> are specified, all proxies will be respected.</p> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/caching/" - title="Caching" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Caching</a><a - href="/docs/configuration/cookies/" - title="Cookies" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Cookies<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/rate-limiting/index.html b/public/docs/configuration/rate-limiting/index.html deleted file mode 100644 index 76d02b8..0000000 --- a/public/docs/configuration/rate-limiting/index.html +++ /dev/null @@ -1,559 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Rate Limiting – Flyscrape</title> - <meta name="description" content="The rate config option allows you to specify at which rate the scraper should send out requests. The rate is measured in Requests per Minute (RPM). -When no rate is specified, rate limiting is disabled and the scraper will send out requests as fast as it can. -Configurationexport const options = { url: "http://example.com/", rate: 100, }; " /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/rate-limiting/" itemprop="url" /> - - - - -<meta property="og:title" content="Rate Limiting" /> -<meta property="og:description" content="The rate config option allows you to specify at which rate the scraper should send out requests. The rate is measured in Requests per Minute (RPM). -When no rate is specified, rate limiting is disabled and the scraper will send out requests as fast as it can. -Configurationexport const options = { url: "http://example.com/", rate: 100, }; " /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/rate-limiting/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Rate Limiting"> -<meta itemprop="description" content="The rate config option allows you to specify at which rate the scraper should send out requests. The rate is measured in Requests per Minute (RPM). -When no rate is specified, rate limiting is disabled and the scraper will send out requests as fast as it can. -Configurationexport const options = { url: "http://example.com/", rate: 100, }; "> - -<meta itemprop="wordCount" content="57"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Rate Limiting"/> -<meta name="twitter:description" content="The rate config option allows you to specify at which rate the scraper should send out requests. The rate is measured in Requests per Minute (RPM). -When no rate is specified, rate limiting is disabled and the scraper will send out requests as fast as it can. -Configurationexport const options = { url: "http://example.com/", rate: 100, }; "/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Rate Limiting</div> -</div> - - <div class="content"> - <h1>Rate Limiting</h1> - <p>The <code>rate</code> config option allows you to specify at which rate the scraper should send out requests. The rate is measured in <em>Requests per Minute</em> (RPM).</p> -<p>When no <code>rate</code> is specified, rate limiting is disabled and the scraper will send out requests as fast as it can.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">rate</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/concurrency/" - title="Concurrency" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Concurrency</a><a - href="/docs/configuration/retry/" - title="Retry" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Retry<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/retry/index.html b/public/docs/configuration/retry/index.html deleted file mode 100644 index 3da9826..0000000 --- a/public/docs/configuration/retry/index.html +++ /dev/null @@ -1,576 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Retry – Flyscrape</title> - <meta name="description" content="The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes. -The retry feature is automatically enabled and will retry requests that return the following HTTP status codes: -403 Forbidden 408 Request Timeout 425 Too Early 429 Too Many Requests 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout Retry Delays After a failed request, the scraper will wait for a certain amount of time before retrying the request." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/retry/" itemprop="url" /> - - - - -<meta property="og:title" content="Retry" /> -<meta property="og:description" content="The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes. -The retry feature is automatically enabled and will retry requests that return the following HTTP status codes: -403 Forbidden 408 Request Timeout 425 Too Early 429 Too Many Requests 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout Retry Delays After a failed request, the scraper will wait for a certain amount of time before retrying the request." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/retry/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Retry"> -<meta itemprop="description" content="The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes. -The retry feature is automatically enabled and will retry requests that return the following HTTP status codes: -403 Forbidden 408 Request Timeout 425 Too Early 429 Too Many Requests 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout Retry Delays After a failed request, the scraper will wait for a certain amount of time before retrying the request."> - -<meta itemprop="wordCount" content="123"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Retry"/> -<meta name="twitter:description" content="The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes. -The retry feature is automatically enabled and will retry requests that return the following HTTP status codes: -403 Forbidden 408 Request Timeout 425 Too Early 429 Too Many Requests 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout Retry Delays After a failed request, the scraper will wait for a certain amount of time before retrying the request."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/retry/" - - >Retry - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - ></a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#retry-delays">Retry Delays - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Retry</div> -</div> - - <div class="content"> - <h1>Retry</h1> - <p>The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes.</p> -<p>The retry feature is automatically enabled and will retry requests that return the following HTTP status codes:</p> -<ul> -<li>403 Forbidden</li> -<li>408 Request Timeout</li> -<li>425 Too Early</li> -<li>429 Too Many Requests</li> -<li>500 Internal Server Error</li> -<li>502 Bad Gateway</li> -<li>503 Service Unavailable</li> -<li>504 Gateway Timeout</li> -</ul> -<h3>Retry Delays<span class="absolute -mt-20" id="retry-delays"></span> - <a href="#retry-delays" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>After a failed request, the scraper will wait for a certain amount of time before retrying the request. The delay increases with each consecutive failed attempt, according to the following schedule:</p> -<ul> -<li>1st retry: 1 second delay</li> -<li>2nd retry: 2 seconds delay</li> -<li>3rd retry: 5 seconds delay</li> -<li>4th retry: 10 seconds delay</li> -</ul> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/rate-limiting/" - title="Rate Limiting" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Rate Limiting</a><a - href="/docs/configuration/caching/" - title="Caching" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Caching<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/starting-url/index.html b/public/docs/configuration/starting-url/index.html deleted file mode 100644 index 77130fb..0000000 --- a/public/docs/configuration/starting-url/index.html +++ /dev/null @@ -1,589 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Starting URL – Flyscrape</title> - <meta name="description" content="The url config option allows you to specify the initial URL at which the scraper should start its scraping process. -Configurationexport const config = { url: "http://example.com/", // ... }; Multiple starting URLs In case you have more than one URL you want to scrape (or to start from) you can specify them with the urls config option. -Configurationexport const config = { urls: [ "http://example.com/", "http://anothersite.com/", "http://yetanothersite.com/", ], // ." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/starting-url/" itemprop="url" /> - - - - -<meta property="og:title" content="Starting URL" /> -<meta property="og:description" content="The url config option allows you to specify the initial URL at which the scraper should start its scraping process. -Configurationexport const config = { url: "http://example.com/", // ... }; Multiple starting URLs In case you have more than one URL you want to scrape (or to start from) you can specify them with the urls config option. -Configurationexport const config = { urls: [ "http://example.com/", "http://anothersite.com/", "http://yetanothersite.com/", ], // ." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/starting-url/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Starting URL"> -<meta itemprop="description" content="The url config option allows you to specify the initial URL at which the scraper should start its scraping process. -Configurationexport const config = { url: "http://example.com/", // ... }; Multiple starting URLs In case you have more than one URL you want to scrape (or to start from) you can specify them with the urls config option. -Configurationexport const config = { urls: [ "http://example.com/", "http://anothersite.com/", "http://yetanothersite.com/", ], // ."> - -<meta itemprop="wordCount" content="72"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Starting URL"/> -<meta name="twitter:description" content="The url config option allows you to specify the initial URL at which the scraper should start its scraping process. -Configurationexport const config = { url: "http://example.com/", // ... }; Multiple starting URLs In case you have more than one URL you want to scrape (or to start from) you can specify them with the urls config option. -Configurationexport const config = { urls: [ "http://example.com/", "http://anothersite.com/", "http://yetanothersite.com/", ], // ."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#multiple-starting-urls" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Multiple starting URLs</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#multiple-starting-urls">Multiple starting URLs - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Starting URL</div> -</div> - - <div class="content"> - <h1>Starting URL</h1> - <p>The <code>url</code> config option allows you to specify the initial URL at which the scraper should start its scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Multiple starting URLs<span class="absolute -mt-20" id="multiple-starting-urls"></span> - <a href="#multiple-starting-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In case you have more than one URL you want to scrape (or to start from) you can specify them with the <code>urls</code> config option.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://anothersite.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://yetanothersite.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/configuration/" - title="Configuration" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Configuration</a><a - href="/docs/configuration/depth/" - title="Depth" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Depth<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/configuration/url-filter/index.html b/public/docs/configuration/url-filter/index.html deleted file mode 100644 index 264627f..0000000 --- a/public/docs/configuration/url-filter/index.html +++ /dev/null @@ -1,610 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - URL Filter – Flyscrape</title> - <meta name="description" content="The allowedURLs and blockedURLs config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedURLs: ["/articles/.*", "/authors/.*"], blockedURLs: ["/authors/admin"], // ... }; Allowed URLs This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/configuration/url-filter/" itemprop="url" /> - - - - -<meta property="og:title" content="URL Filter" /> -<meta property="og:description" content="The allowedURLs and blockedURLs config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedURLs: ["/articles/.*", "/authors/.*"], blockedURLs: ["/authors/admin"], // ... }; Allowed URLs This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/configuration/url-filter/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="URL Filter"> -<meta itemprop="description" content="The allowedURLs and blockedURLs config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedURLs: ["/articles/.*", "/authors/.*"], blockedURLs: ["/authors/admin"], // ... }; Allowed URLs This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked."> - -<meta itemprop="wordCount" content="152"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="URL Filter"/> -<meta name="twitter:description" content="The allowedURLs and blockedURLs config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping. -Configurationexport const options = { url: "http://example.com/", allowedURLs: ["/articles/.*", "/authors/.*"], blockedURLs: ["/authors/admin"], // ... }; Allowed URLs This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#allowed-urls" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Allowed URLs</a> - </li> - <li> - <a - href="#blocked-urls" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Blocked URLs</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#allowed-urls">Allowed URLs - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#blocked-urls">Blocked URLs - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/configuration/">Configuration</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">URL Filter</div> -</div> - - <div class="content"> - <h1>URL Filter</h1> - <p>The <code>allowedURLs</code> and <code>blockedURLs</code> config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/articles/.*"</span><span class="p">,</span> <span class="s2">"/authors/.*"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/authors/admin"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed URLs<span class="absolute -mt-20" id="allowed-urls"></span> - <a href="#allowed-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked.</p> -<p>When a list of URL patterns is provided, only URLs matching one or more of these patterns are allowed to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/products/"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked URLs<span class="absolute -mt-20" id="blocked-urls"></span> - <a href="#blocked-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are blocked from being visted during scraping.</p> -<p>When a list of URL patterns is provided, URLs matching one or more of these patterns are blocked from to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"http://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/restricted"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/getting-started/" - title="Getting Started" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Getting Started</a><a - href="/docs/configuration/link-following/" - title="Link Following" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Link Following<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/full-example-script/index.html b/public/docs/full-example-script/index.html deleted file mode 100644 index d382393..0000000 --- a/public/docs/full-example-script/index.html +++ /dev/null @@ -1,653 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Full Example Script – Flyscrape</title> - <meta name="description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/full-example-script/" itemprop="url" /> - - - - -<meta property="og:title" content="Full Example Script" /> -<meta property="og:description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/full-example-script/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Full Example Script"> -<meta itemprop="description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite."> - -<meta itemprop="wordCount" content="435"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Full Example Script"/> -<meta name="twitter:description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Full Example Script</div> -</div> - - <div class="content"> - <h1>Full Example Script</h1> - <p>This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">parse</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">download</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape/http"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">http</span> <span class="nx">from</span> <span class="s2">"flyscrape/http"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the URL to start scraping from. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">url</span><span class="o">:</span> <span class="s2">"https://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the multiple URLs to start scraping from. (default = []) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"https://anothersite.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"https://yetanother.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Enable rendering with headless browser. (default = false) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify if browser should be headless or not. (default = true) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">headless</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify how deep links should be followed. (default = 0, no follow) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">depth</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Speficy the css selectors to follow. (default = ["a[href]"]) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span><span class="s2">".next > a"</span><span class="p">,</span> <span class="s2">".related a"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed domains. ['*'] for all. (default = domain from url) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"example.com"</span><span class="p">,</span> <span class="s2">"anothersite.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked domains. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"somesite.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed URLs as regex. (default = all allowed) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/posts"</span><span class="p">,</span> <span class="s2">"/articles/\d+"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked URLs as regex. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/admin"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the rate in requests per minute. (default = no rate limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">rate</span><span class="o">:</span> <span class="mi">60</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. (default = no limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Note: Not compatible with browser mode. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Note: Not compatible with browser mode. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someotherproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Enable file-based request caching. (default = no cache) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">cache</span><span class="o">:</span> <span class="s2">"file"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the HTTP request header. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"Authorization"</span><span class="o">:</span> <span class="s2">"Bearer ..."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"User-Agent"</span><span class="o">:</span> <span class="s2">"Mozilla ..."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Use the cookie store of your local browser. (default = off) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Options: "chrome" | "edge" | "firefox" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">"chrome"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output options. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. (default = stdout) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">"results.json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. (default = json) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Options: "json" | "ndjson" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">"json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="p">({</span> <span class="nx">doc</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">absoluteURL</span> <span class="p">})</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// doc - Contains the parsed HTML document -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// url - Contains the scraped URL -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// absoluteURL(...) - Transforms relative URLs into absolute URLs -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Find all users. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kr">const</span> <span class="nx">userlist</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".user"</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Download the profile picture of each user. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">user</span> <span class="p">=></span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".name"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">pictureURL</span> <span class="o">=</span> <span class="nx">absoluteURL</span><span class="p">(</span><span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">"img"</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"src"</span><span class="p">));</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="nx">download</span><span class="p">(</span><span class="nx">pictureURL</span><span class="p">,</span> <span class="sb">`profile-pictures/</span><span class="si">${</span><span class="nx">name</span><span class="si">}</span><span class="sb">.jpg`</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Return users name, address and age. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">users</span><span class="o">:</span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">user</span> <span class="p">=></span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".name"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">address</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".address"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">age</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".age"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">address</span><span class="p">,</span> <span class="nx">age</span> <span class="p">};</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/installation/" - title="Installation" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Installation</a><a - href="/docs/api-reference/" - title="API Reference" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >API Reference<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/getting-started/index.html b/public/docs/getting-started/index.html deleted file mode 100644 index 7430729..0000000 --- a/public/docs/getting-started/index.html +++ /dev/null @@ -1,725 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Getting Started – Flyscrape</title> - <meta name="description" content="In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you’ve got flyscrape up and running on your system. -The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the installation instructions. -Terminalcurl -fsSL https://flyscrape.com/install | bash Overview Flyscrape is a standalone scraping tool tool that works with so called scraping scripts." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/getting-started/" itemprop="url" /> - - - - -<meta property="og:title" content="Getting Started" /> -<meta property="og:description" content="In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you’ve got flyscrape up and running on your system. -The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the installation instructions. -Terminalcurl -fsSL https://flyscrape.com/install | bash Overview Flyscrape is a standalone scraping tool tool that works with so called scraping scripts." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/getting-started/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Getting Started"> -<meta itemprop="description" content="In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you’ve got flyscrape up and running on your system. -The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the installation instructions. -Terminalcurl -fsSL https://flyscrape.com/install | bash Overview Flyscrape is a standalone scraping tool tool that works with so called scraping scripts."> - -<meta itemprop="wordCount" content="655"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Getting Started"/> -<meta name="twitter:description" content="In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you’ve got flyscrape up and running on your system. -The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the installation instructions. -Terminalcurl -fsSL https://flyscrape.com/install | bash Overview Flyscrape is a standalone scraping tool tool that works with so called scraping scripts."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block font-medium" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/getting-started/" - - >Getting Started - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#overview" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Overview</a> - </li> - <li> - <a - href="#your-first-scraping-script" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Your first Scraping Script</a> - </li> - <li> - <a - href="#anatomy-of-a-scraping-script" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Anatomy of a Scraping Script</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#overview">Overview - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#your-first-scraping-script">Your first Scraping Script - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#anatomy-of-a-scraping-script">Anatomy of a Scraping Script - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#configuration">Configuration - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#data-extraction-logic">Data Extraction Logic - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#starting-the-development-mode">Starting the Development Mode - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#running-the-scraper">Running the Scraper - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#learn-more">Learn more - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Getting Started</div> -</div> - - <div class="content"> - <h1>Getting Started</h1> - <p>In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you’ve got <code>flyscrape</code> up and running on your system.</p> -<p>The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the <a href="/docs/installation" >installation instructions</a>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -fsSL https://flyscrape.com/install <span class="p">|</span> bash</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Overview<span class="absolute -mt-20" id="overview"></span> - <a href="#overview" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Flyscrape is a standalone scraping tool tool that works with so called <em>scraping scripts</em>.</p> -<p>Scraping scripts let you define what data you want to extract from a website using familiar JavaScript code you might recognize from jQuery or cherrio. Inside your scraping script, you can also configure how the Flyscrape should behave, e.g. what links to follow, what domains to access, how fast to send out requests, etc.</p> -<p>When your happy with the initial version of your scraping script, you can run Flyscrape and it will go off and start scraping the websites you have defined.</p> -<h2>Your first Scraping Script<span class="absolute -mt-20" id="your-first-scraping-script"></span> - <a href="#your-first-scraping-script" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>A new scraping script can be created using the <code>new</code> command. This script is meant as a helpful guide to let you explore the JavaScript API.</p> -<p>Go a head and run the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape new hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>This should have created you a new file called <code>hackernews.js</code> in your current directory. You can open it up in your favorite text editor.</p> -<h2>Anatomy of a Scraping Script<span class="absolute -mt-20" id="anatomy-of-a-scraping-script"></span> - <a href="#anatomy-of-a-scraping-script" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Let’s look at the previously created <code>hackernews.js</code> file and go through it together. Every scraping script consists of two main parts:</p> -<h3>Configuration<span class="absolute -mt-20" id="configuration"></span> - <a href="#configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The configuration is used to control the scraping behaviour. Here we can specify what URLs to scrape, how deep it should follow links or what domains should be allowed to acess. Besides these, there are a bunch more to explore.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">"https://hackernews.com"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// depth: 0, -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// allowedDomains: [], -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Data Extraction Logic<span class="absolute -mt-20" id="data-extraction-logic"></span> - <a href="#data-extraction-logic" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The data extracting logic defines what data to extract from a website. In this example it grabs the posts from the website using the <code>doc</code> document object and extracts the individual links and their titles. The <code>absoluteURL</code> function is used to ensure that every relative link is converted into an absolute one.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Data Extraction Logic</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span><span class="p">({</span> <span class="nx">doc</span><span class="p">,</span> <span class="nx">absoluteURL</span> <span class="p">})</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">title</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">"title"</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">posts</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".athing"</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">title</span><span class="o">:</span> <span class="nx">title</span><span class="p">.</span><span class="nx">text</span><span class="p">(),</span> -</span></span><span class="line"><span class="cl"> <span class="nx">posts</span><span class="o">:</span> <span class="nx">posts</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">post</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">link</span> <span class="o">=</span> <span class="nx">post</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".titleline > a"</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">title</span><span class="o">:</span> <span class="nx">link</span><span class="p">.</span><span class="nx">text</span><span class="p">(),</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="nx">absoluteURL</span><span class="p">(</span><span class="nx">link</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"href"</span><span class="p">)),</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"> <span class="p">}),</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Starting the Development Mode<span class="absolute -mt-20" id="starting-the-development-mode"></span> - <a href="#starting-the-development-mode" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Flyscrape has a built in Development Mode that allows you to quickly iterate and see changes to your script immediately. -It does so by watching your script for changes and re-runs the Data Extraction Logic against a cached version of the website.</p> -<p>Let’s try and fire that up using the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape dev hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>You should now see the extracted data of your target website. Note that no links are followed in this mode, even when otherwise specified in the configuration.</p> -<p>Now let’s try and change our script so we extract some more data like the user, who submitted the post.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">hackernews.js</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-diff" data-lang="diff"><span class="line"><span class="cl"> return { -</span></span><span class="line"><span class="cl"> title: title.text(), -</span></span><span class="line"><span class="cl"> posts: posts.map((post) => { -</span></span><span class="line"><span class="cl"> const link = post.find(".titleline > a"); -</span></span><span class="line"><span class="cl"><span class="gi">+ const meta = post.next(); -</span></span></span><span class="line"><span class="cl"><span class="gi"></span> -</span></span><span class="line"><span class="cl"> return { -</span></span><span class="line"><span class="cl"> title: link.text(), -</span></span><span class="line"><span class="cl"> url: absoluteURL(link.attr("href")), -</span></span><span class="line"><span class="cl"><span class="gi">+ user: meta.find(".hnuser").text(), -</span></span></span><span class="line"><span class="cl"><span class="gi"></span> }; -</span></span><span class="line"><span class="cl"> }), -</span></span><span class="line"><span class="cl"> }; -</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>When you now save the file and look at your terminal again, the changes should have reflected and the user added to each of the posts.</p> -<p>Once you’re happy with the extraction logic, your can exit out by pressing CTRL+C.</p> -<h3>Running the Scraper<span class="absolute -mt-20" id="running-the-scraper"></span> - <a href="#running-the-scraper" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Now that your scraping script is configured and the extraction logic is in place, your can use the <code>run</code> command to execute the scraper.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape run hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>This should output a JSON array of all scraped pages.</p> -<h3>Learn more<span class="absolute -mt-20" id="learn-more"></span> - <a href="#learn-more" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Once you’re done experimenting feel fee to check many of Flyscrape’s other features. There are plenty to customize it for your specific needs.</p> -<ul> -<li><a href="/docs/full-example-script" >Full Example Script</a></li> -<li><a href="/docs/api-reference" >API Reference</a></li> -</ul> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/installation/" - title="Installation" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Installation<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/index.html b/public/docs/index.html deleted file mode 100644 index 440cb6f..0000000 --- a/public/docs/index.html +++ /dev/null @@ -1,587 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Documentation – Flyscrape</title> - <meta name="description" content="Introduction Getting started Installation Reference Script API Reference Configuration Starting URL Depth Domain Filter URL Filter Link Following Concurrency Rate Limiting Retry Caching Proxies Cookies Headers Browser Mode Output File and Format " /> - - - <link rel="canonical" href="https://flyscrape.com/docs/" itemprop="url" /> - - - - -<meta property="og:title" content="Documentation" /> -<meta property="og:description" content="A modern toolkit for building custom scrapers in minutes." /> -<meta property="og:type" content="website" /> -<meta property="og:url" content="https://flyscrape.com/docs/" /> - - <meta itemprop="name" content="Documentation"> -<meta itemprop="description" content="A modern toolkit for building custom scrapers in minutes."><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Documentation"/> -<meta name="twitter:description" content="A modern toolkit for building custom scrapers in minutes."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#introduction" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Introduction</a> - </li> - <li> - <a - href="#configuration" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Configuration</a> - </li> - </ul> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#introduction">Introduction - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#configuration">Configuration - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Documentation</div> -</div> - - <div class="content"> - <h1>Documentation</h1> - <h2>Introduction<span class="absolute -mt-20" id="introduction"></span> - <a href="#introduction" class="subheading-anchor" aria-label="Permalink for this section"></a></h2> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="getting-started" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/><path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>Getting started</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="installation" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>Installation</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="reference-script" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"/></svg>Reference Script</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="api-reference" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z"/></svg>API Reference</span></a> -</div> - -<h2>Configuration<span class="absolute -mt-20" id="configuration"></span> - <a href="#configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h2> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/starting-url" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/><path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>Starting URL</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/depth" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M19 14l-7 7m0 0l-7-7m7 7V3"/></svg>Depth</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/domain-filter" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M14 10l-2 1m0 0l-2-1m2 1v2.5M20 7l-2 1m2-1l-2-1m2 1v2.5M14 4l-2-1-2 1M4 7l2-1M4 7l2 1M4 7v2.5M12 21l-2-1m2 1l2-1m-2 1v-2.5M6 18l-2-1v-2.5M18 18l2-1v-2.5"/></svg>Domain Filter</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/url-filter" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z"/></svg>URL Filter</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/link-following" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/></svg>Link Following</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/concurrency" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"/></svg>Concurrency</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/rate-limiting" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M16 8v8m-4-5v5m-4-2v2m-2 4h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/></svg>Rate Limiting</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/retry" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/></svg>Retry</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/caching" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"/></svg>Caching</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/proxies" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/></svg>Proxies</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/cookies" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 11c0 3.517-1.009 6.799-2.753 9.571m-3.44-2.04l.054-.09A13.916 13.916 0 008 11a4 4 0 118 0c0 1.017-.07 2.019-.203 3m-2.118 6.844A21.88 21.88 0 0015.171 17m3.839 1.132c.645-2.266.99-4.659.99-7.132A8 8 0 008 4.07M3 15.364c.64-1.319 1-2.8 1-4.364 0-1.457.39-2.823 1.07-4"/></svg>Cookies</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/headers" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"/></svg>Headers</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/browser-mode" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg>Browser Mode</span></a> - <a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="configuration/output" ><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M8 13v-1m4 1v-3m4 3V8M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"/></svg>Output File and Format</span></a> -</div> - - - </div> - <div class="mt-16"></div> - - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/index.xml b/public/docs/index.xml deleted file mode 100644 index b35c1ba..0000000 --- a/public/docs/index.xml +++ /dev/null @@ -1,1191 +0,0 @@ -<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> - <channel> - <title>Flyscrape – Documentation</title> - <link>https://flyscrape.com/docs/</link> - <description>Recent content in Documentation on Flyscrape</description> - <generator>Hugo -- gohugo.io</generator> - <language>en-us</language> - - <atom:link href="https://flyscrape.com/docs/index.xml" rel="self" type="application/rss+xml" /> - - - - - - - - <item> - <title>Getting Started</title> - <link>https://flyscrape.com/docs/getting-started/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/getting-started/</guid> - <description> - - - <p>In this quick guide we will go over the core functionalities of Flyscrape and how to use it. Make sure you&rsquo;ve got <code>flyscrape</code> up and running on your system.</p> -<p>The quickest way to install Flyscrape on Mac, Linux or WSL is to run the following command. For more information or how to install it on Windows check out the <a href="https://flyscrape.com/docs/installation" >installation instructions</a>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -fsSL https://flyscrape.com/install <span class="p">|</span> bash</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Overview<span class="absolute -mt-20" id="overview"></span> - <a href="#overview" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Flyscrape is a standalone scraping tool tool that works with so called <em>scraping scripts</em>.</p> -<p>Scraping scripts let you define what data you want to extract from a website using familiar JavaScript code you might recognize from jQuery or cherrio. Inside your scraping script, you can also configure how the Flyscrape should behave, e.g. what links to follow, what domains to access, how fast to send out requests, etc.</p> -<p>When your happy with the initial version of your scraping script, you can run Flyscrape and it will go off and start scraping the websites you have defined.</p> -<h2>Your first Scraping Script<span class="absolute -mt-20" id="your-first-scraping-script"></span> - <a href="#your-first-scraping-script" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>A new scraping script can be created using the <code>new</code> command. This script is meant as a helpful guide to let you explore the JavaScript API.</p> -<p>Go a head and run the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape new hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>This should have created you a new file called <code>hackernews.js</code> in your current directory. You can open it up in your favorite text editor.</p> -<h2>Anatomy of a Scraping Script<span class="absolute -mt-20" id="anatomy-of-a-scraping-script"></span> - <a href="#anatomy-of-a-scraping-script" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Let&rsquo;s look at the previously created <code>hackernews.js</code> file and go through it together. Every scraping script consists of two main parts:</p> -<h3>Configuration<span class="absolute -mt-20" id="configuration"></span> - <a href="#configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The configuration is used to control the scraping behaviour. Here we can specify what URLs to scrape, how deep it should follow links or what domains should be allowed to acess. Besides these, there are a bunch more to explore.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;https://hackernews.com&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// depth: 0, -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// allowedDomains: [], -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Data Extraction Logic<span class="absolute -mt-20" id="data-extraction-logic"></span> - <a href="#data-extraction-logic" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The data extracting logic defines what data to extract from a website. In this example it grabs the posts from the website using the <code>doc</code> document object and extracts the individual links and their titles. The <code>absoluteURL</code> function is used to ensure that every relative link is converted into an absolute one.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Data Extraction Logic</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span><span class="p">({</span> <span class="nx">doc</span><span class="p">,</span> <span class="nx">absoluteURL</span> <span class="p">})</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">title</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;title&#34;</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">posts</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.athing&#34;</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">title</span><span class="o">:</span> <span class="nx">title</span><span class="p">.</span><span class="nx">text</span><span class="p">(),</span> -</span></span><span class="line"><span class="cl"> <span class="nx">posts</span><span class="o">:</span> <span class="nx">posts</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">post</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">link</span> <span class="o">=</span> <span class="nx">post</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.titleline &gt; a&#34;</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">title</span><span class="o">:</span> <span class="nx">link</span><span class="p">.</span><span class="nx">text</span><span class="p">(),</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="nx">absoluteURL</span><span class="p">(</span><span class="nx">link</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&#34;href&#34;</span><span class="p">)),</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"> <span class="p">}),</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Starting the Development Mode<span class="absolute -mt-20" id="starting-the-development-mode"></span> - <a href="#starting-the-development-mode" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Flyscrape has a built in Development Mode that allows you to quickly iterate and see changes to your script immediately. -It does so by watching your script for changes and re-runs the Data Extraction Logic against a cached version of the website.</p> -<p>Let&rsquo;s try and fire that up using the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape dev hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>You should now see the extracted data of your target website. Note that no links are followed in this mode, even when otherwise specified in the configuration.</p> -<p>Now let&rsquo;s try and change our script so we extract some more data like the user, who submitted the post.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">hackernews.js</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-diff" data-lang="diff"><span class="line"><span class="cl"> return { -</span></span><span class="line"><span class="cl"> title: title.text(), -</span></span><span class="line"><span class="cl"> posts: posts.map((post) =&gt; { -</span></span><span class="line"><span class="cl"> const link = post.find(&#34;.titleline &gt; a&#34;); -</span></span><span class="line"><span class="cl"><span class="gi">+ const meta = post.next(); -</span></span></span><span class="line"><span class="cl"><span class="gi"></span> -</span></span><span class="line"><span class="cl"> return { -</span></span><span class="line"><span class="cl"> title: link.text(), -</span></span><span class="line"><span class="cl"> url: absoluteURL(link.attr(&#34;href&#34;)), -</span></span><span class="line"><span class="cl"><span class="gi">+ user: meta.find(&#34;.hnuser&#34;).text(), -</span></span></span><span class="line"><span class="cl"><span class="gi"></span> }; -</span></span><span class="line"><span class="cl"> }), -</span></span><span class="line"><span class="cl"> }; -</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>When you now save the file and look at your terminal again, the changes should have reflected and the user added to each of the posts.</p> -<p>Once you&rsquo;re happy with the extraction logic, your can exit out by pressing CTRL+C.</p> -<h3>Running the Scraper<span class="absolute -mt-20" id="running-the-scraper"></span> - <a href="#running-the-scraper" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Now that your scraping script is configured and the extraction logic is in place, your can use the <code>run</code> command to execute the scraper.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">flyscrape run hackernews.js</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>This should output a JSON array of all scraped pages.</p> -<h3>Learn more<span class="absolute -mt-20" id="learn-more"></span> - <a href="#learn-more" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Once you&rsquo;re done experimenting feel fee to check many of Flyscrape&rsquo;s other features. There are plenty to customize it for your specific needs.</p> -<ul> -<li><a href="https://flyscrape.com/docs/full-example-script" >Full Example Script</a></li> -<li><a href="https://flyscrape.com/docs/api-reference" >API Reference</a></li> -</ul> - - </description> - </item> - - <item> - <title>Starting URL</title> - <link>https://flyscrape.com/docs/configuration/starting-url/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/starting-url/</guid> - <description> - - - <p>The <code>url</code> config option allows you to specify the initial URL at which the scraper should start its scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Multiple starting URLs<span class="absolute -mt-20" id="multiple-starting-urls"></span> - <a href="#multiple-starting-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In case you have more than one URL you want to scrape (or to start from) you can specify them with the <code>urls</code> config option.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://anothersite.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://yetanothersite.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Depth</title> - <link>https://flyscrape.com/docs/configuration/depth/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/depth/</guid> - <description> - - - <p>The <code>depth</code> config option allows you to specify how deep the scraping process should follow links from the initial URL.</p> -<p>When no value is provided or <code>depth</code> is set to <code>0</code> link following is disabled and it will only scrape the initial URL.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">depth</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>With the config provided in the example the scraper would follow links like this:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><pre><code>http://example.com/ (depth = 0, initial URL) -↳ http://example.com/deeply (depth = 1) - ↳ http://example.com/deeply/nested (depth = 2)</code></pre><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Installation</title> - <link>https://flyscrape.com/docs/installation/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/installation/</guid> - <description> - - - <h2>Recommended<span class="absolute -mt-20" id="recommended"></span> - <a href="#recommended" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux).</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -fsSL https://flyscrape.com/install <span class="p">|</span> bash</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Alternative 1: Homebrew (macOS)<span class="absolute -mt-20" id="alternative-1-homebrew-macos"></span> - <a href="#alternative-1-homebrew-macos" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If you are on macOS, you can install Flyscrape via <a href="https://formulae.brew.sh/formula/flyscrape" target="_blank" rel="noopener">Homebrew</a>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">brew install flyscrape</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries.</p> -<h2>Alternative 2: Manual installation (all systems)<span class="absolute -mt-20" id="alternative-2-manual-installation-all-systems"></span> - <a href="#alternative-2-manual-installation-all-systems" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Whether you are on macOS, Linux or Windows you can download one of the following archives -to your local machine or visit the <a href="https://github.com/philippta/flyscrape/releases" target="_blank" rel="noopener">releases page on Github</a>.</p> -<h4>macOS<span class="absolute -mt-20" id="macos"></span> - <a href="#macos" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_darwin_arm64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>macOS (Apple Silicon)</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_darwin_amd64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>macOS (Intel)</span></a> -</div> - -<h4>Linux<span class="absolute -mt-20" id="linux"></span> - <a href="#linux" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_linux_amd64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Linux</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_linux_arm64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Linux (arm64)</span></a> -</div> - -<h4>Windows<span class="absolute -mt-20" id="windows"></span> - <a href="#windows" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_windows_amd64.zip" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Windows</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_windows_arm64.zip" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Windows</span></a> -</div> - -<h3>Unpack<span class="absolute -mt-20" id="unpack"></span> - <a href="#unpack" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Unpack the downloaded archive by double-clicking on it or using the command line:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tar xf flyscrape_&lt;os&gt;_&lt;arch&gt;.tar.gz</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>After unpacking you should find a folder with the same name as the archive, which contains the <code>flyscrape</code> executable. -Change directory into it using:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> flyscrape_&lt;os&gt;_&lt;arch&gt;/</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Install<span class="absolute -mt-20" id="install"></span> - <a href="#install" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In order to make the <code>flyscrape</code> executable globally available, you can move it to either location in your <code>$PATH</code> variable. -A good default location for that is <code>/usr/local/bin</code>. So move it using the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mv flyscrape /usr/local/bin/flyscrape</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Verify<span class="absolute -mt-20" id="verify"></span> - <a href="#verify" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>From here on you should be able to run <code>flyscrape</code> from any directory on your machine. To verify you can run the following command. -If everything went to plan you should see Flyscrapes help text:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">flyscrape --help</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">flyscrape is a standalone and scriptable web scraper for efficiently extracting data from websites. -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl">Usage: -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> flyscrape &lt;command&gt; [arguments] -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl">Commands: -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> new creates a sample scraping script -</span></span><span class="line"><span class="cl"> run runs a scraping script -</span></span><span class="line"><span class="cl"> dev watches and re-runs a scraping script</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Domain Filter</title> - <link>https://flyscrape.com/docs/configuration/domain-filter/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/domain-filter/</guid> - <description> - - - <p>The <code>allowedDomains</code> and <code>blockedDomains</code> config options allow you to specify a list of domains which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;subdomain.example.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed Domains<span class="absolute -mt-20" id="allowed-domains"></span> - <a href="#allowed-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are allowed to be visted during scraping. The domain of the initial URL is always allowed.</p> -<p>You can also allow all domains to be accessible by setting <code>allowedDomains</code> to <code>[&quot;*&quot;]</code>. To then further restrict access, you can specify <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked Domains<span class="absolute -mt-20" id="blocked-domains"></span> - <a href="#blocked-domains" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which additional domains are blocked from being accessed. By default all domains other than the domain of the initial URL or those specified in <code>allowedDomains</code> are blocked.</p> -<p>You can best use <code>blockedDomains</code> in conjunction with <code>allowedDomains: [&quot;*&quot;]</code>, allowing the scraping process to access all domains except what&rsquo;s specified in <code>blockedDomains</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;google.com&#34;</span><span class="p">,</span> <span class="s2">&#34;bing.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Full Example Script</title> - <link>https://flyscrape.com/docs/full-example-script/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/full-example-script/</guid> - <description> - - - <p>This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">parse</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">&#34;flyscrape&#34;</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">download</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">&#34;flyscrape/http&#34;</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">http</span> <span class="nx">from</span> <span class="s2">&#34;flyscrape/http&#34;</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the URL to start scraping from. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;https://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the multiple URLs to start scraping from. (default = []) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;https://anothersite.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;https://yetanother.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Enable rendering with headless browser. (default = false) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify if browser should be headless or not. (default = true) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">headless</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify how deep links should be followed. (default = 0, no follow) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">depth</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Speficy the css selectors to follow. (default = [&#34;a[href]&#34;]) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;.next &gt; a&#34;</span><span class="p">,</span> <span class="s2">&#34;.related a&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed domains. [&#39;*&#39;] for all. (default = domain from url) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;example.com&#34;</span><span class="p">,</span> <span class="s2">&#34;anothersite.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked domains. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;somesite.com&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed URLs as regex. (default = all allowed) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/posts&#34;</span><span class="p">,</span> <span class="s2">&#34;/articles/\d+&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked URLs as regex. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/admin&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the rate in requests per minute. (default = no rate limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">rate</span><span class="o">:</span> <span class="mi">60</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. (default = no limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Note: Not compatible with browser mode. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Note: Not compatible with browser mode. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someotherproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Enable file-based request caching. (default = no cache) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">cache</span><span class="o">:</span> <span class="s2">&#34;file&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the HTTP request header. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;Authorization&#34;</span><span class="o">:</span> <span class="s2">&#34;Bearer ...&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;User-Agent&#34;</span><span class="o">:</span> <span class="s2">&#34;Mozilla ...&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Use the cookie store of your local browser. (default = off) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Options: &#34;chrome&#34; | &#34;edge&#34; | &#34;firefox&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;chrome&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output options. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. (default = stdout) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">&#34;results.json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. (default = json) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Options: &#34;json&#34; | &#34;ndjson&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">&#34;json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="p">({</span> <span class="nx">doc</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">absoluteURL</span> <span class="p">})</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// doc - Contains the parsed HTML document -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// url - Contains the scraped URL -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// absoluteURL(...) - Transforms relative URLs into absolute URLs -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Find all users. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kr">const</span> <span class="nx">userlist</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.user&#34;</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Download the profile picture of each user. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">user</span> <span class="p">=&gt;</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.name&#34;</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">pictureURL</span> <span class="o">=</span> <span class="nx">absoluteURL</span><span class="p">(</span><span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;img&#34;</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&#34;src&#34;</span><span class="p">));</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="nx">download</span><span class="p">(</span><span class="nx">pictureURL</span><span class="p">,</span> <span class="sb">`profile-pictures/</span><span class="si">${</span><span class="nx">name</span><span class="si">}</span><span class="sb">.jpg`</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Return users name, address and age. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">users</span><span class="o">:</span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">user</span> <span class="p">=&gt;</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.name&#34;</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">address</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.address&#34;</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">age</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.age&#34;</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">address</span><span class="p">,</span> <span class="nx">age</span> <span class="p">};</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>API Reference</title> - <link>https://flyscrape.com/docs/api-reference/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/api-reference/</guid> - <description> - - - <h2>Query API<span class="absolute -mt-20" id="query-api"></span> - <a href="#query-api" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="c1">// &lt;div class=&#34;element&#34; foo=&#34;bar&#34;&gt;Hey&lt;/div&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">el</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.element&#34;</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">el</span><span class="p">.</span><span class="nx">text</span><span class="p">()</span> <span class="c1">// &#34;Hey&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">html</span><span class="p">()</span> <span class="c1">// `&lt;div class=&#34;element&#34;&gt;Hey&lt;/div&gt;` -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s2">&#34;foo&#34;</span><span class="p">)</span> <span class="c1">// &#34;bar&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">hasAttr</span><span class="p">(</span><span class="s2">&#34;foo&#34;</span><span class="p">)</span> <span class="c1">// true -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">el</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="s2">&#34;element&#34;</span><span class="p">)</span> <span class="c1">// true -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="c1">// &lt;ul&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1">// &lt;li class=&#34;a&#34;&gt;Item 1&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1">// &lt;li&gt;Item 2&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1">// &lt;li&gt;Item 3&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1">// &lt;/ul&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">list</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;ul&#34;</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">list</span><span class="p">.</span><span class="nx">children</span><span class="p">()</span> <span class="c1">// [&lt;li class=&#34;a&#34;&gt;Item 1&lt;/li&gt;, &lt;li&gt;Item 2&lt;/li&gt;, &lt;li&gt;Item 3&lt;/li&gt;] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">items</span> <span class="o">=</span> <span class="nx">list</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;li&#34;</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"><span class="nx">items</span><span class="p">.</span><span class="nx">length</span><span class="p">()</span> <span class="c1">// 3 -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">first</span><span class="p">()</span> <span class="c1">// &lt;li&gt;Item 1&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">last</span><span class="p">()</span> <span class="c1">// &lt;li&gt;Item 3&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1">// &lt;li&gt;Item 2&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">prev</span><span class="p">()</span> <span class="c1">// &lt;li&gt;Item 1&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">next</span><span class="p">()</span> <span class="c1">// &lt;li&gt;Item 3&lt;/li&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">parent</span><span class="p">()</span> <span class="c1">// &lt;ul&gt;...&lt;/ul&gt; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nx">siblings</span><span class="p">()</span> <span class="c1">// [&lt;li class=&#34;a&#34;&gt;Item 1&lt;/li&gt;, &lt;li&gt;Item 2&lt;/li&gt;, &lt;li&gt;Item 3&lt;/li&gt;] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">item</span> <span class="p">=&gt;</span> <span class="nx">item</span><span class="p">.</span><span class="nx">text</span><span class="p">())</span> <span class="c1">// [&#34;Item 1&#34;, &#34;Item 2&#34;, &#34;Item 3&#34;] -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">items</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">item</span> <span class="p">=&gt;</span> <span class="nx">item</span><span class="p">.</span><span class="nx">hasClass</span><span class="p">(</span><span class="s2">&#34;a&#34;</span><span class="p">))</span> <span class="c1">// [&lt;li class=&#34;a&#34;&gt;Item 1&lt;/li&gt;] -</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Document Parsing<span class="absolute -mt-20" id="document-parsing"></span> - <a href="#document-parsing" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">parse</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">&#34;flyscrape&#34;</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">doc</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="sb">`&lt;div class=&#34;foo&#34;&gt;bar&lt;/div&gt;`</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">text</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">&#34;.foo&#34;</span><span class="p">).</span><span class="nx">text</span><span class="p">();</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>File Downloads<span class="absolute -mt-20" id="file-downloads"></span> - <a href="#file-downloads" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">download</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">&#34;flyscrape/http&#34;</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="nx">download</span><span class="p">(</span><span class="s2">&#34;http://example.com/image.jpg&#34;</span><span class="p">)</span> <span class="c1">// downloads as &#34;image.jpg&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">&#34;http://example.com/image.jpg&#34;</span><span class="p">,</span> <span class="s2">&#34;other.jpg&#34;</span><span class="p">)</span> <span class="c1">// downloads as &#34;other.jpg&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">&#34;http://example.com/image.jpg&#34;</span><span class="p">,</span> <span class="s2">&#34;dir/&#34;</span><span class="p">)</span> <span class="c1">// downloads as &#34;dir/image.jpg&#34; -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"><span class="c1">// If the server offers a filename via the Content-Disposition header and no -</span></span></span><span class="line"><span class="cl"><span class="c1">// destination filename is provided, Flyscrape will honor the suggested filename. -</span></span></span><span class="line"><span class="cl"><span class="c1">// E.g. `Content-Disposition: attachment; filename=&#34;archive.zip&#34;` -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">download</span><span class="p">(</span><span class="s2">&#34;http://example.com/generate_archive.php&#34;</span><span class="p">,</span> <span class="s2">&#34;dir/&#34;</span><span class="p">)</span> <span class="c1">// downloads as &#34;dir/archive.zip&#34; -</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>URL Filter</title> - <link>https://flyscrape.com/docs/configuration/url-filter/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/url-filter/</guid> - <description> - - - <p>The <code>allowedURLs</code> and <code>blockedURLs</code> config options allow you to specify a list of URL patterns (in form of regular expressions) which are accessible or blocked during scraping.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/articles/.*&#34;</span><span class="p">,</span> <span class="s2">&#34;/authors/.*&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/authors/admin&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Allowed URLs<span class="absolute -mt-20" id="allowed-urls"></span> - <a href="#allowed-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are allowed to be visted during scraping. When no value is provided all URLs are allowed to be visited if not otherwise blocked.</p> -<p>When a list of URL patterns is provided, only URLs matching one or more of these patterns are allowed to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/products/&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Blocked URLs<span class="absolute -mt-20" id="blocked-urls"></span> - <a href="#blocked-urls" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This config option controls which URLs are blocked from being visted during scraping.</p> -<p>When a list of URL patterns is provided, URLs matching one or more of these patterns are blocked from to be visted.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">&#34;/restricted&#34;</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Link Following</title> - <link>https://flyscrape.com/docs/configuration/link-following/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/link-following/</guid> - <description> - - - <p>The <code>follow</code> config option allows you to specify a list of CSS selectors that determine which links the scraper should follow.</p> -<p>When no value is provided the scraper will follow all links found with the <code>a[href]</code> selector.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.pagination &gt; a[href]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.nav a[href]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Following non <code>href</code> attributes<span class="absolute -mt-20" id="following-non-href-attributes"></span> - <a href="#following-non-href-attributes" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For special cases where the link is not to be found in the <code>href</code>, you specify a selector with a different ending attribute.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;.articles &gt; div[data-url]&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Concurrency</title> - <link>https://flyscrape.com/docs/configuration/concurrency/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/concurrency/</guid> - <description> - - - <p>The concurrency setting controls the number of simultaneous requests that the scraper can make. This is specified in the configuration object of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraper will make up to 5 requests at the same time.</p> -<p>If the concurrency setting is not specified, there is no limit to the number of concurrent requests.</p> - - </description> - </item> - - <item> - <title>Rate Limiting</title> - <link>https://flyscrape.com/docs/configuration/rate-limiting/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/rate-limiting/</guid> - <description> - - - <p>The <code>rate</code> config option allows you to specify at which rate the scraper should send out requests. The rate is measured in <em>Requests per Minute</em> (RPM).</p> -<p>When no <code>rate</code> is specified, rate limiting is disabled and the scraper will send out requests as fast as it can.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">rate</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Retry</title> - <link>https://flyscrape.com/docs/configuration/retry/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/retry/</guid> - <description> - - - <p>The retry feature allows the scraper to automatically retry failed requests. This is particularly useful when dealing with unstable networks or servers that occasionally return error status codes.</p> -<p>The retry feature is automatically enabled and will retry requests that return the following HTTP status codes:</p> -<ul> -<li>403 Forbidden</li> -<li>408 Request Timeout</li> -<li>425 Too Early</li> -<li>429 Too Many Requests</li> -<li>500 Internal Server Error</li> -<li>502 Bad Gateway</li> -<li>503 Service Unavailable</li> -<li>504 Gateway Timeout</li> -</ul> -<h3>Retry Delays<span class="absolute -mt-20" id="retry-delays"></span> - <a href="#retry-delays" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>After a failed request, the scraper will wait for a certain amount of time before retrying the request. The delay increases with each consecutive failed attempt, according to the following schedule:</p> -<ul> -<li>1st retry: 1 second delay</li> -<li>2nd retry: 2 seconds delay</li> -<li>3rd retry: 5 seconds delay</li> -<li>4th retry: 10 seconds delay</li> -</ul> - - </description> - </item> - - <item> - <title>Caching</title> - <link>https://flyscrape.com/docs/configuration/caching/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/caching/</guid> - <description> - - - <p>The <code>cache</code> config option allows you to enable file-based request caching. When enabled every request cached with its raw response. When the cache is populated and you re-run the scraper, requests will be served directly from cache.</p> -<p>This also allows you to modify your scraping script afterwards and collect new results immediately.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">&#34;file&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Cache File<span class="absolute -mt-20" id="cache-file"></span> - <a href="#cache-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>When caching is enabled using the <code>cache: &quot;file&quot;</code> option, a <code>.cache</code> file will be created with the name of your scraping script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ flyscrape run hackernews.js <span class="c1"># Will populate: hackernews.cache</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Shared cache<span class="absolute -mt-20" id="shared-cache"></span> - <a href="#shared-cache" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In case you want to share a cache between different scraping scripts, you can specify where to store the cache file.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">url</span><span class="o">:</span> <span class="s2">&#34;http://example.com/&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cache</span><span class="o">:</span> <span class="s2">&#34;file:/some/path/shared.cache&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Proxies</title> - <link>https://flyscrape.com/docs/configuration/proxies/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/proxies/</guid> - <description> - - - <p>The proxy feature allows you to route your scraping requests through a specified HTTP(S) proxy. This can be useful for bypassing IP-based rate limits or accessing region-restricted content.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, all scraping requests will be routed through the proxy at <code>http://someproxy.com:8043</code>.</p> -<h2>Multiple Proxies<span class="absolute -mt-20" id="multiple-proxies"></span> - <a href="#multiple-proxies" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>You can also specify multiple proxy URLs. The scraper will rotate between these proxies for each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;http://someotherproxy.com:8043&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-0"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraper will randomly pick between the proxies at <code>http://someproxy.com:8043</code> and <code>http://someotherproxy.com:8043</code>.</p> -<p>Note: If both <code>proxy</code> and <code>proxies</code> are specified, all proxies will be respected.</p> - - </description> - </item> - - <item> - <title>Cookies</title> - <link>https://flyscrape.com/docs/configuration/cookies/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/cookies/</guid> - <description> - - - <p>The Cookies configuration in the <code>flyscrape</code> script&rsquo;s configuration object allows you to specify the behavior of the cookie store during the scraping process. Cookies are often used for authentication and session management on websites.</p> -<h2>Cookies Configuration<span class="absolute -mt-20" id="cookies-configuration"></span> - <a href="#cookies-configuration" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To configure the cookie store behavior, set the <code>cookies</code> field in your configuration. The <code>cookies</code> option supports three values: <code>&quot;chrome&quot;</code>, <code>&quot;edge&quot;</code>, and <code>&quot;firefox&quot;</code>. Each value corresponds to using the cookie store of the respective local browser.</p> -<p>When the <code>cookies</code> option is set to <code>&quot;chrome&quot;</code>, <code>&quot;edge&quot;</code>, or <code>&quot;firefox&quot;</code>, <code>flyscrape</code> utilizes the cookie store of the user&rsquo;s installed browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;chrome&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the <code>cookies</code> option is set to <code>&quot;chrome&quot;</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Chrome browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;firefox&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>&quot;firefox&quot;</code>, instructing <code>flyscrape</code> to use the cookie store of the local Firefox browser.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">cookies</span><span class="o">:</span> <span class="s2">&#34;edge&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the <code>cookies</code> option is set to <code>&quot;edge&quot;</code>, indicating that <code>flyscrape</code> should use the cookie store of the local Edge browser.</p> - - </description> - </item> - - <item> - <title>Headers</title> - <link>https://flyscrape.com/docs/configuration/headers/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/headers/</guid> - <description> - - - <p>The <code>headers</code> config option allows you to specify the custom HTTP headers sent with each request.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;Authorization&#34;</span><span class="o">:</span> <span class="s2">&#34;Bearer ey....&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">&#34;User-Agent&#34;</span><span class="o">:</span> <span class="s2">&#34;Mozilla/5.0 (Macintosh ...&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// ... -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </description> - </item> - - <item> - <title>Browser Mode</title> - <link>https://flyscrape.com/docs/configuration/browser-mode/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/browser-mode/</guid> - <description> - - - <p>The Browser Mode controls the interaction with a headless Chromium browser. Enabling the browser mode allows <code>flyscrape</code> to download a Chromium browser once and use it to render JavaScript-heavy pages.</p> -<h2>Browser Mode<span class="absolute -mt-20" id="browser-mode"></span> - <a href="#browser-mode" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To enable Browser Mode, set the <code>browser</code> option to <code>true</code> in your configuration. This allows <code>flyscrape</code> to use a headless Chromium browser for rendering JavaScript during the scraping process.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, Browser Mode is enabled, allowing <code>flyscrape</code> to render pages that rely on JavaScript execution.</p> -<h2>Headless Option<span class="absolute -mt-20" id="headless-option"></span> - <a href="#headless-option" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The <code>headless</code> option, when combined with Browser Mode, controls whether the Chromium browser should run in headless mode or not. Headless mode means the browser operates without a graphical user interface, which can be useful for background processes.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in non-headless mode. If you set <code>headless</code> to <code>true</code>, the browser will run without a visible GUI.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">browser</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="nx">headless</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the Chromium browser will run in headless mode, suitable for scenarios where graphical rendering is unnecessary.</p> - - </description> - </item> - - <item> - <title>Output File and Format</title> - <link>https://flyscrape.com/docs/configuration/output/</link> - <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> - - <guid>https://flyscrape.com/docs/configuration/output/</guid> - <description> - - - <p>The output file and format are specified in the configuration object of your scraping script. They determine where the scraped data will be saved and in what format.</p> -<h2>Output File<span class="absolute -mt-20" id="output-file"></span> - <a href="#output-file" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output file is the file where the scraped data will be saved. If not specified, the data will be printed to the standard output (stdout).</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">&#34;results.json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in a file named <code>results.json</code>.</p> -<h2>Output Format<span class="absolute -mt-20" id="output-format"></span> - <a href="#output-format" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The output format is the format in which the scraped data will be saved. The options are <code>json</code> and <code>ndjson</code>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">&#34;json&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In the above example, the scraped data will be saved in JSON format.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Configuration</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">&#34;ndjson&#34;</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>In this example, the scraped data will be saved in newline-delimited JSON (NDJSON) format. Each line in the output file will be a separate JSON object.</p> - - </description> - </item> - - </channel> -</rss> diff --git a/public/docs/installation/index.html b/public/docs/installation/index.html deleted file mode 100644 index f3a33b8..0000000 --- a/public/docs/installation/index.html +++ /dev/null @@ -1,729 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title> - Installation – Flyscrape</title> - <meta name="description" content="Recommended The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux). -Terminalcurl -fsSL https://flyscrape.com/install | bash Alternative 1: Homebrew (macOS) If you are on macOS, you can install Flyscrape via Homebrew. -Terminalbrew install flyscrape Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries. -Alternative 2: Manual installation (all systems) Whether you are on macOS, Linux or Windows you can download one of the following archives to your local machine or visit the releases page on Github." /> - - - <link rel="canonical" href="https://flyscrape.com/docs/installation/" itemprop="url" /> - - - - -<meta property="og:title" content="Installation" /> -<meta property="og:description" content="Recommended The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux). -Terminalcurl -fsSL https://flyscrape.com/install | bash Alternative 1: Homebrew (macOS) If you are on macOS, you can install Flyscrape via Homebrew. -Terminalbrew install flyscrape Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries. -Alternative 2: Manual installation (all systems) Whether you are on macOS, Linux or Windows you can download one of the following archives to your local machine or visit the releases page on Github." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/installation/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Installation"> -<meta itemprop="description" content="Recommended The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux). -Terminalcurl -fsSL https://flyscrape.com/install | bash Alternative 1: Homebrew (macOS) If you are on macOS, you can install Flyscrape via Homebrew. -Terminalbrew install flyscrape Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries. -Alternative 2: Manual installation (all systems) Whether you are on macOS, Linux or Windows you can download one of the following archives to your local machine or visit the releases page on Github."> - -<meta itemprop="wordCount" content="266"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Installation"/> -<meta name="twitter:description" content="Recommended The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux). -Terminalcurl -fsSL https://flyscrape.com/install | bash Alternative 1: Homebrew (macOS) If you are on macOS, you can install Flyscrape via Homebrew. -Terminalbrew install flyscrape Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries. -Alternative 2: Manual installation (all systems) Whether you are on macOS, Linux or Windows you can download one of the following archives to your local machine or visit the releases page on Github."/> - - <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" /> - - - - <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-+x1w059JDGJaOlf4r+RHGkQOJn6k1WJEolJJB8sp6bU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a> - <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/installation/" - - >Installation - </a> - - <ul class='flex flex-col gap-1 relative before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] dark:before:bg-neutral-800 ltr:pl-3 ltr:before:left-0 rtl:pr-3 rtl:before:right-0 ltr:ml-3 rtl:mr-3'><li> - <a - href="#recommended" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Recommended</a> - </li> - <li> - <a - href="#alternative-1-homebrew-macos" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Alternative 1: Homebrew (macOS)</a> - </li> - <li> - <a - href="#alternative-2-manual-installation-all-systems" - class="flex rounded px-2 py-1.5 text-sm transition-colors [word-break:break-word] cursor-pointer [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] contrast-more:border gap-2 before:opacity-25 before:content-['#'] text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:text-gray-900 contrast-more:dark:text-gray-50 contrast-more:border-transparent contrast-more:hover:border-gray-900 contrast-more:dark:hover:border-gray-50" - >Alternative 2: Manual installation (all systems)</a> - </li> - </ul> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/cloud/" - - >Flyscrape Cloud - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/proxy/" - - >Flyscrape Proxyᴮᴱᵀᴬ - </a></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/full-example-script/" - - >Full Example Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/cookies/" - - >Cookies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"><p class="mb-4 font-semibold tracking-tight">On this page</p><ul> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#recommended">Recommended - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#alternative-1-homebrew-macos">Alternative 1: Homebrew (macOS) - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="font-semibold inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#alternative-2-manual-installation-all-systems">Alternative 2: Manual installation (all systems) - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-8 rtl:pr-8 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#macos">macOS - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-8 rtl:pr-8 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#linux">Linux - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-8 rtl:pr-8 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#windows">Windows - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#unpack">Unpack - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#install">Install - </a> - </li> - <li class="my-2 scroll-my-6 scroll-py-6"> - <a class="ltr:pl-4 rtl:pr-4 inline-block text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300 contrast-more:text-gray-900 contrast-more:underline contrast-more:dark:text-gray-50 w-full break-words" href="#verify">Verify - </a> - </li></ul> - <div class="mt-8 border-t bg-white pt-8 shadow-[0_-12px_16px_white] dark:bg-dark dark:shadow-[0_-12px_16px_#111] sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Installation</div> -</div> - - <div class="content"> - <h1>Installation</h1> - <h2>Recommended<span class="absolute -mt-20" id="recommended"></span> - <a href="#recommended" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The easiest way to install Flyscrape is to use the following command. Note: This only works on macOS, Linux and WSL (Windows Subsystem for Linux).</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -fsSL https://flyscrape.com/install <span class="p">|</span> bash</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h2>Alternative 1: Homebrew (macOS)<span class="absolute -mt-20" id="alternative-1-homebrew-macos"></span> - <a href="#alternative-1-homebrew-macos" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If you are on macOS, you can install Flyscrape via <a href="https://formulae.brew.sh/formula/flyscrape" target="_blank" rel="noopener">Homebrew</a>.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">brew install flyscrape</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>Otherwise you can download and install Flyscrape by using one of the pre-compiled binaries.</p> -<h2>Alternative 2: Manual installation (all systems)<span class="absolute -mt-20" id="alternative-2-manual-installation-all-systems"></span> - <a href="#alternative-2-manual-installation-all-systems" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Whether you are on macOS, Linux or Windows you can download one of the following archives -to your local machine or visit the <a href="https://github.com/philippta/flyscrape/releases" target="_blank" rel="noopener">releases page on Github</a>.</p> -<h4>macOS<span class="absolute -mt-20" id="macos"></span> - <a href="#macos" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_darwin_arm64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>macOS (Apple Silicon)</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_darwin_amd64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>macOS (Intel)</span></a> -</div> - -<h4>Linux<span class="absolute -mt-20" id="linux"></span> - <a href="#linux" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_linux_amd64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Linux</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_linux_arm64.tar.gz" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Linux (arm64)</span></a> -</div> - -<h4>Windows<span class="absolute -mt-20" id="windows"></span> - <a href="#windows" class="subheading-anchor" aria-label="Permalink for this section"></a></h4> - -<div class="hextra-cards mt-4 gap-4 grid not-prose" style="--rows: 3;"> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_windows_amd64.zip" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Windows</span></a> -<a - class="hextra-card group flex flex-col justify-start overflow-hidden rounded-lg border border-gray-200 text-current no-underline dark:shadow-none hover:shadow-gray-100 dark:hover:shadow-none shadow-gray-100 active:shadow-sm active:shadow-gray-200 transition-all duration-200 hover:border-gray-300 bg-transparent shadow-sm dark:border-neutral-800 hover:bg-slate-50 hover:shadow-md dark:hover:border-neutral-700 dark:hover:bg-neutral-900"href="https://github.com/philippta/flyscrape/releases/latest/download/flyscrape_0.9.0_windows_arm64.zip" target="_blank" rel="noreferrer"><span class="flex font-semibold items-start gap-2 p-4 text-gray-700 hover:text-gray-900 dark:text-neutral-200 dark:hover:text-neutral-50"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10"/></svg>Windows</span></a> -</div> - -<h3>Unpack<span class="absolute -mt-20" id="unpack"></span> - <a href="#unpack" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Unpack the downloaded archive by double-clicking on it or using the command line:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tar xf flyscrape_<os>_<arch>.tar.gz</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<p>After unpacking you should find a folder with the same name as the archive, which contains the <code>flyscrape</code> executable. -Change directory into it using:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> flyscrape_<os>_<arch>/</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Install<span class="absolute -mt-20" id="install"></span> - <a href="#install" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In order to make the <code>flyscrape</code> executable globally available, you can move it to either location in your <code>$PATH</code> variable. -A good default location for that is <code>/usr/local/bin</code>. So move it using the following command:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mv flyscrape /usr/local/bin/flyscrape</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<h3>Verify<span class="absolute -mt-20" id="verify"></span> - <a href="#verify" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>From here on you should be able to run <code>flyscrape</code> from any directory on your machine. To verify you can run the following command. -If everything went to plan you should see Flyscrapes help text:</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">flyscrape --help</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Terminal</div><div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">flyscrape is a standalone and scriptable web scraper for efficiently extracting data from websites. -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl">Usage: -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> flyscrape <command> [arguments] -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl">Commands: -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> new creates a sample scraping script -</span></span><span class="line"><span class="cl"> run runs a scraping script -</span></span><span class="line"><span class="cl"> dev watches and re-runs a scraping script</span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/getting-started/" - title="Getting Started" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Getting Started</a><a - href="/docs/full-example-script/" - title="Full Example Script" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >Full Example Script<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq+/bZed+/HwEIhOXiCze2cXAWKVQTnMLEbM="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> diff --git a/public/docs/reference-script/index.html b/public/docs/reference-script/index.html deleted file mode 100644 index 797dd0c..0000000 --- a/public/docs/reference-script/index.html +++ /dev/null @@ -1,645 +0,0 @@ -<!DOCTYPE html> -<html lang="en"><head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="robots" content="index, follow" /> - <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" /> -<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> -<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" /> -<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" /> -<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" /> -<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" /> -<link fetchpriority="low" href="/site.webmanifest" rel="manifest" /> - - <title>Reference Script – Flyscrape</title> - <meta name="description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite." /> - - - -<meta property="og:title" content="Reference Script" /> -<meta property="og:description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite." /> -<meta property="og:type" content="article" /> -<meta property="og:url" content="https://flyscrape.com/docs/reference-script/" /><meta property="article:section" content="docs" /> - - - - <meta itemprop="name" content="Reference Script"> -<meta itemprop="description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite."> - -<meta itemprop="wordCount" content="421"> -<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/> -<meta name="twitter:title" content="Reference Script"/> -<meta name="twitter:description" content="This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script. -Referenceimport { parse } from "flyscrape"; import { download } from "flyscrape/http"; import http from "flyscrape/http"; export const config = { // Specify the URL to start scraping from. url: "https://example.com/", // Specify the multiple URLs to start scraping from. (default = []) urls: [ "https://anothersite."/> - - <link rel="preload" href="/css/compiled/main.min.e6054bb4c42d5f921a19b84c22421cd524846500732ef18a921f7a55b69faeb0.css" as="style" integrity="sha256-5gVLtMQtX5IaGbhMIkIc1SSEZQBzLvGKkh96VbafrrA=" /> - <link href="/css/compiled/main.min.e6054bb4c42d5f921a19b84c22421cd524846500732ef18a921f7a55b69faeb0.css" rel="stylesheet" integrity="sha256-5gVLtMQtX5IaGbhMIkIc1SSEZQBzLvGKkh96VbafrrA=" /> - - - - <link href="/css/custom.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css" rel="stylesheet" integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=" /> - - - - - - - <script> - - const defaultTheme = 'system'; - - const setDarkTheme = () => { - document.documentElement.classList.add("dark"); - document.documentElement.style.colorScheme = "dark"; - } - const setLightTheme = () => { - document.documentElement.classList.remove("dark"); - document.documentElement.style.colorScheme = "light"; - } - - if ("color-theme" in localStorage) { - localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme(); - } else { - defaultTheme === "dark" ? setDarkTheme() : setLightTheme(); - if (defaultTheme === "system") { - window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme(); - } - } - </script> - - -</head> -<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"> - <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div> - - <nav class="mx-auto flex items-center justify-end gap-2 h-16 px-6 max-w-[90rem]"> - <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/"> - <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" /> - <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" /> - <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span> - </a><a - title="Documentation" - href="/docs/getting-started/" - - class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap p-2 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200" - > - <span class="text-center">Documentation</span> - </a><div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> -<a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18"> - <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path> -</svg> -<span class="sr-only">GitHub</span> - </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button> - </nav> -</div> - - <div class='mx-auto flex max-w-screen-xl'> - <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div> -<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:sticky"> - - <div class="px-4 pt-4 md:hidden"> - <div class="search-wrapper relative md:w-64"> - <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300"> - <input - placeholder="Search..." - class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current" - type="search" - value="" - spellcheck="false" - /> - <kbd - class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex" - > - CTRL K - </kbd> - </div> - - <div> - <ul - class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]" - style="transition: max-height 0.2s ease 0s;" - ></ul> - </div> -</div> - - </div> - <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]"> - <ul class="flex flex-col gap-1 md:hidden"> - - - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/" - - >Documentation - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/reference-script/" - - >Reference Script - </a> - - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a> - - </li><li class="flex flex-col open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a> - <div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li></ul> - </div> - </li></ul> - </div></li> - </ul> - - <ul class="flex flex-col gap-1 max-md:hidden"> - - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/installation/" - - >Installation - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/getting-started/" - - >Getting Started - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - sidebar-active-item bg-primary-100 font-semibold text-primary-800 contrast-more:border contrast-more:border-primary-500 dark:bg-primary-400/10 dark:text-primary-600 contrast-more:dark:border-primary-500" - href="/docs/reference-script/" - - >Reference Script - </a></li> - <li class=""><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/api-reference/" - - >API Reference - </a></li> - <li class="open"><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/" - - >Configuration - <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span> - </a><div class="ltr:pr-0 overflow-hidden"> - <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/starting-url/" - - >Starting URL - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/depth/" - - >Depth - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/domain-filter/" - - >Domain Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/url-filter/" - - >URL Filter - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/link-following/" - - >Link Following - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/concurrency/" - - >Concurrency - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/rate-limiting/" - - >Rate Limiting - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/retry/" - - >Retry - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/caching/" - - >Caching - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/proxies/" - - >Proxies - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/headers/" - - >Headers - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/output/" - - >Output File and Format - </a> - - </li><li class="flex flex-col "><a - class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word] - text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50" - href="/docs/configuration/browser-mode/" - - >Browser Mode - </a> - - </li></ul> - </div></li> - - </ul> - </div> - - - <div class=" sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button - title="Change theme" - data-theme="light" - class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50" - type="button" - aria-label="Change theme" -> - <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div> -</button> -</div></div></aside> - -<nav class="hextra-toc order-last hidden w-64 shrink-0 xl:block print:hidden px-4" aria-label="table of contents"> - <div class="hextra-scrollbar sticky top-16 overflow-y-auto pr-4 pt-6 text-sm [hyphens:auto] max-h-[calc(100vh-var(--navbar-height)-env(safe-area-inset-bottom))] ltr:-mr-4 rtl:-ml-4"> - <div class=" sticky bottom-0 flex flex-col items-start gap-2 pb-8 dark:border-neutral-800 contrast-more:border-t contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:border-neutral-400"> - <button aria-hidden="true" id="backToTop" onClick="scrollUp();" class="transition-all transition duration-75 opacity-0 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 contrast-more:text-gray-800 contrast-more:dark:text-gray-50"> - <span>Scroll to top</span> - <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline ml-1 h-3.5 w-3.5 border rounded-full border-gray-500 hover:border-gray-900 dark:border-gray-400 dark:hover:border-gray-100 contrast-more:border-gray-800 contrast-more:dark:border-gray-50"> - <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 15.75l7.5-7.5 7.5 7.5" /> - </svg> - </button> - </div> - </div> - </nav> - - - <article class="w-full break-words flex min-h-[calc(100vh-var(--navbar-height))] min-w-0 justify-center pb-8 pr-[calc(env(safe-area-inset-right)-1.5rem)]"> - <main class="w-full min-w-0 max-w-6xl px-6 pt-4 md:px-12"> - <div class="mt-1.5 flex items-center gap-1 overflow-hidden text-sm text-gray-500 dark:text-gray-400 contrast-more:text-current"> - <div class="whitespace-nowrap transition-colors min-w-[24px] overflow-hidden text-ellipsis hover:text-gray-900 dark:hover:text-gray-100"> - <a href="https://flyscrape.com/docs/">Documentation</a> - </div><svg class="w-3.5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg><div class="whitespace-nowrap transition-colors font-medium text-gray-700 contrast-more:font-bold contrast-more:text-current dark:text-gray-100 contrast-more:dark:text-current">Reference Script</div> -</div> - - <div class="content"> - <h1>Reference Script</h1> - <p>This script serves as a reference that show all features of Flyscrape and how to use them. Feel free to copy and paste this as a starter script.</p> -<div class="code-block relative mt-6 first:mt-0 group/code"><div class="filename">Reference</div><div id="code-block-0"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">parse</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">download</span> <span class="p">}</span> <span class="nx">from</span> <span class="s2">"flyscrape/http"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"><span class="kr">import</span> <span class="nx">http</span> <span class="nx">from</span> <span class="s2">"flyscrape/http"</span><span class="p">;</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="kr">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the URL to start scraping from. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">url</span><span class="o">:</span> <span class="s2">"https://example.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the multiple URLs to start scraping from. (default = []) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">urls</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"https://anothersite.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"https://yetanother.com/"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify how deep links should be followed. (default = 0, no follow) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">depth</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Speficy the css selectors to follow. (default = ["a[href]"]) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">follow</span><span class="o">:</span> <span class="p">[</span><span class="s2">".next > a"</span><span class="p">,</span> <span class="s2">".related a"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed domains. ['*'] for all. (default = domain from url) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"example.com"</span><span class="p">,</span> <span class="s2">"anothersite.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked domains. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedDomains</span><span class="o">:</span> <span class="p">[</span><span class="s2">"somesite.com"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the allowed URLs as regex. (default = all allowed) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">allowedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/posts"</span><span class="p">,</span> <span class="s2">"/articles/\d+"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the blocked URLs as regex. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">blockedURLs</span><span class="o">:</span> <span class="p">[</span><span class="s2">"/admin"</span><span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the rate in requests per minute. (default = no rate limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">rate</span><span class="o">:</span> <span class="mi">60</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the number of concurrent requests. (default = no limit) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">concurrency</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify a single HTTP(S) proxy URL. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxy</span><span class="o">:</span> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify multiple HTTP(S) proxy URLs. (default = no proxy) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">proxies</span><span class="o">:</span> <span class="p">[</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"http://someotherproxy.com:8043"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">],</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Enable file-based request caching. (default = no cache) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">cache</span><span class="o">:</span> <span class="s2">"file"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the HTTP request header. (default = none) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"Authorization"</span><span class="o">:</span> <span class="s2">"Bearer ..."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"User-Agent"</span><span class="o">:</span> <span class="s2">"Mozilla ..."</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output options. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">output</span><span class="o">:</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output file. (default = stdout) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">file</span><span class="o">:</span> <span class="s2">"results.json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Specify the output format. (default = json) -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// Options: "json" | "ndjson" -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">format</span><span class="o">:</span> <span class="s2">"json"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">},</span> -</span></span><span class="line"><span class="cl"><span class="p">};</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="c1">// Optional setup function, called before scraping starts. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">export</span> <span class="kd">function</span> <span class="nx">setup</span><span class="p">()</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Fetch login form. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kr">const</span> <span class="p">{</span> <span class="nx">body</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">http</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">"http://example.com/login"</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Extract csrf token from form. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kr">const</span> <span class="nx">csrf</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="nx">body</span><span class="p">).</span><span class="nx">find</span><span class="p">(</span><span class="s2">"input[name=csrf]"</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"value"</span><span class="p">);</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Submit login form. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">http</span><span class="p">.</span><span class="nx">postForm</span><span class="p">(</span><span class="s2">"http://example.com/login"</span><span class="p">,</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"username"</span><span class="o">:</span> <span class="s2">"jondoe"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"password"</span><span class="o">:</span> <span class="s2">"supersecret"</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="s2">"csrf"</span><span class="o">:</span> <span class="nx">csrf</span><span class="p">,</span> -</span></span><span class="line"><span class="cl"> <span class="p">});</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="kd">function</span> <span class="p">({</span> <span class="nx">doc</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">absoluteURL</span> <span class="p">})</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="c1">// doc - Contains the parsed HTML document -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// url - Contains the scraped URL -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="c1">// absoluteURL(...) - Transforms relative URLs into absolute URLs -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> -</span></span><span class="line"><span class="cl"> <span class="c1">// Find all users. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kr">const</span> <span class="nx">userlist</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".user"</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Download the profile picture of each user. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">user</span> <span class="p">=></span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".name"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">pictureURL</span> <span class="o">=</span> <span class="nx">absoluteURL</span><span class="p">(</span><span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">"img"</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s2">"src"</span><span class="p">));</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="nx">download</span><span class="p">(</span><span class="nx">pictureURL</span><span class="p">,</span> <span class="sb">`profile-pictures/</span><span class="si">${</span><span class="nx">name</span><span class="si">}</span><span class="sb">.jpg`</span><span class="p">)</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="c1">// Return users name, address and age. -</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">return</span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="nx">users</span><span class="o">:</span> <span class="nx">userlist</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">user</span> <span class="p">=></span> <span class="p">{</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".name"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">address</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".address"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">age</span> <span class="o">=</span> <span class="nx">user</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="s2">".age"</span><span class="p">).</span><span class="nx">text</span><span class="p">()</span> -</span></span><span class="line"><span class="cl"> -</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">address</span><span class="p">,</span> <span class="nx">age</span> <span class="p">};</span> -</span></span><span class="line"><span class="cl"> <span class="p">})</span> -</span></span><span class="line"><span class="cl"> <span class="p">};</span> -</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="opacity-0 transition group-hover/code:opacity-100 flex gap-1 absolute m-[11px] right-0 top-8"> - <button - class="code-copy-btn group/copybtn transition-all active:opacity-50 bg-primary-700/5 border border-black/5 text-gray-600 hover:text-gray-900 rounded-md p-1.5 dark:bg-primary-300/10 dark:border-white/10 dark:text-gray-400 dark:hover:text-gray-50" - title="Copy code" - data-clipboard-target="#code-block-0" - > - <div class="group-[.copied]/copybtn:hidden copy-icon pointer-events-none h-4 w-4"></div> - <div class="hidden group-[.copied]/copybtn:block success-icon pointer-events-none h-4 w-4"></div> - </button> - </div> -</div> - - </div> - <div class="mt-16"></div> - <div class="mb-8 flex items-center border-t pt-8 dark:border-neutral-800 contrast-more:border-neutral-400 dark:contrast-more:border-neutral-400 print:hidden"><a - href="/docs/getting-started/" - title="Getting Started" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:pr-4 rtl:pl-4" - ><svg class="inline h-5 shrink-0 ltr:rotate-180" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg>Getting Started</a><a - href="/docs/api-reference/" - title="API Reference" - class="flex max-w-[50%] items-center gap-1 py-4 text-base font-medium text-gray-600 transition-colors [word-break:break-word] hover:text-primary-600 dark:text-gray-300 md:text-lg ltr:ml-auto ltr:pl-4 ltr:text-right rtl:mr-auto rtl:pr-4 rtl:text-left" - >API Reference<svg class="inline h-5 shrink-0" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></a></div> - - </main> - </article> - </div> - - </body> - <script defer src="/js/main.min.b6a2a5de84a8502fae54c981012bd27f4a4da6bcaeb8d3b05dd350ebd52d91c1.js" integrity="sha256-tqKl3oSoUC+uVMmBASvSf0pNpryuuNOwXdNQ69UtkcE="></script> - - -<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script> - <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG+XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script> - - -</html> |