Test
10 000 stron
3,75 USD
0,38 USD/1K stron
- Wypróbuj na swoich prawdziwych URL-ach
- To samo API co w największym pakiecie
- Kredyty nigdy nie wygasają
Przypadek użycia · migracje i eksporty · /crawl
Przejście na generator stron statycznych, platformę dokumentacji lub bazę wiedzy często zaczyna się od jednego pytania: jak wydobyć moje strony jako czysty Markdown? Crawling robi to w jednym zadaniu, zachowując tytuły, daty i adresy URL we front matter.
Szybka odpowiedź
Jak przekonwertować całą moją stronę internetową do Markdown?
Przejdź przez crawling swojej strony, odczytaj główną treść każdej strony jako Markdown i zapisz jeden plik .md na stronę z jej tytułem, adresem URL i datą we front matter. WebReaderAPI przechodzi przez crawling do 10 000 stron na zadanie, podąża za Twoją sitemapą i robots.txt i nalicza jeden kredyt za stronę z 0,07 USD/1K stron na dzień października 2026. Poniższy skrypt w Pythonie zapisuje pliki. Bez KYC; płatność kryptowalutą.
| Endpoint | POST https://webreaderapi.com/api/v1/crawl, wyniki z GET https://webreaderapi.com/api/v1/jobs/{job_id} |
|---|---|
| Zakres | Crawling jednej witryny na zadanie, do 10 000 stron, zgodnie z jej sitemapą, jej robots.txt i jej Crawl-delay |
| Za stronę | Markdown głównej treści oraz tytuł, opis, autor, data i język |
| Całe strony | main_content=false zachowuje nawigację i stopki, gdy ich potrzebujesz |
| Twój robots.txt | Musi zezwalać WebReaderAPI na strony, które eksportujesz |
| Cena | 3,75 USD za 10 000 stron; kredyty nigdy nie wygasają |
Zawsze, gdy treść musi opuścić system, który ją renderuje. Typowe przypadki:
W każdym przypadku chcesz słów i struktury, a nie otaczającego je motywu.
import os
import pathlib
import time
from urllib.parse import urlparse
import requests
API = "https://webreaderapi.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
SITE = "https://www.example.com/"
OUT = pathlib.Path("export")
def target_path(url):
path = urlparse(url).path.strip("/") or "index"
return OUT / (path + ".md")
def front_matter(page):
fields = {"title": page.get("title", ""), "source": page["final_url"], "date": page.get("published_at") or ""}
lines = ["---"] + [key + ": " + repr(value) for key, value in fields.items()] + ["---", ""]
return "\n".join(lines)
job = requests.post(API + "/crawl", headers=HEADERS, json={"url": SITE, "limit": 2000, "max_depth": 5}, timeout=60).json()
cursor, delay, written = None, 5, 0
while True:
params = {"cursor": cursor} if cursor else {}
batch = requests.get(API + "/jobs/" + job["job_id"], headers=HEADERS, params=params, timeout=60).json()
for page in batch.get("results", []):
if "markdown" not in page:
continue
dest = target_path(page["final_url"])
dest.parent.mkdir(parents=True, exist_ok=True)
dest.write_text(front_matter(page) + page["markdown"] + "\n", encoding="utf-8")
written += 1
cursor = batch.get("next_cursor")
if batch["status"] == "done" and not cursor:
break
if not cursor:
time.sleep(delay)
delay = min(delay * 2, 60)
print(written, "files in", OUT)
Odbij ścieżkę URL w ścieżce pliku, jak robi to skrypt: /guides/setup/ staje się export/guides/setup.md. Zachowaj oryginalny adres URL we front matter jako source, żeby po migracji skonfigurować przekierowania i sprawdzić, czy nic nie zginęło.
Linki wewnątrz Markdown nadal wskazują bieżące adresy URL. Po przeniesieniu zamień domenę lub prefiks ścieżki w jednym przebiegu, a potem przetestuj próbkę stron. Tabele i bloki kodu pozostają Markdownem, więc większość generatorów statycznych renderuje je bez zmian.
Zezwól naszemu tokenowi na czas eksportu. WebReaderAPI czyta tylko to, na co robots.txt pozwala WebReaderAPI lub wszystkim robotom, także w Twojej własnej witrynie. Dodaj grupę taką jak User-agent: WebReaderAPI z Allow: /, uruchom crawling, a potem usuń ją, jeśli chcesz.
Nasza strona crawlera pokazuje dokładne linie i User-Agent, który pojawi się w logach Twojego serwera. Strony, które pozostają zabronione, są pomijane i nie są naliczane.
Jeden kredyt za stronę, dwa za strony wymagające przeglądarki, aby pokazać swój tekst. Strona licząca 2 000 stron renderowana na serwerze kosztuje 2 000 kredytów raz; ta sama strona jako aplikacja JavaScript może kosztować do 4 000. Oba mieszczą się w 10 000 stron za 3,75 USD, na dzień października 2026.
Strona licząca 50 000 stron wymaga kilku zadań, podzielonych według sekcji za pomocą include_paths, i mieści się w 100 000 stron (21,75 USD). Kredyty pozostałe po eksporcie zostają na Twoim koncie na późniejsze odświeżenia.
Policz swoje strony, podwój liczbę, jeśli witryna wymaga JavaScript do renderowania, i wybierz pack powyżej tej liczby. Kredyty nigdy nie wygasają.
10 000 stron
3,75 USD
0,38 USD/1K stron
50 000 stron
14,25 USD
0,28 USD/1K stron
100 000 stron
21,75 USD
0,22 USD/1K stron
W każdym planie: Wyodrębnianie głównej treści · Renderowanie JavaScript, gdy potrzebne · Nieudane i odrzucone strony bez opłat · Kredyty nigdy nie wygasają
Tak. Ustaw main_content=false w opcjach crawlingu, a każdy plik będzie zawierał całą stronę skonwertowaną do Markdown. Większość migracji woli jednak tylko główną treść, bo nowy motyw dostarcza własną nawigację.
Nie. Przy include_images=true linki do obrazów pozostają w Markdown wraz z tekstem alt; same pliki pobierz własnym skryptem, jeśli migracja ich wymaga.
Tylko publiczne strony, na które pozwala jej robots.txt, i tylko do celów, na które pozwalają jej warunki i prawo. W przypadku migracji lub kopii zapasowej eksportuj własne witryny lub witryny, na które właściciel wyraził zgodę.
Do 10 000 stron na jedno zadanie crawlingu, w obrębie jednej domeny. Większe witryny podziel sekcjami za pomocą include_paths i uruchom kilka zadań.
Od 0,07 USD/1K stron · bez KYC
Uzyskaj klucz API