Skip to main content
Version: Next

@crawlee/cheerio

Provides a framework for the parallel crawling of web pages using plain HTTP requests and cheerio HTML parser. The URLs to crawl are fed either from a static list of URLs or from a dynamic queue of URLs enabling recursive crawling of websites.

Since CheerioCrawler uses raw HTTP requests to download web pages, it is very fast and efficient on data bandwidth. However, if the target website requires JavaScript to display the content, you might need to use PuppeteerCrawler or PlaywrightCrawler instead, because it loads the pages using full-featured headless Chrome browser.

CheerioCrawler downloads each URL using a plain HTTP request, parses the HTML content using Cheerio and then invokes the user-provided CheerioCrawlerOptions.requestHandler to extract page data using a jQuery-like interface to the parsed HTML DOM.

The source URLs are represented using Request objects that are fed from RequestList or RequestQueue instances provided by the CheerioCrawlerOptions.requestList or CheerioCrawlerOptions.requestQueue constructor options, respectively.

If both CheerioCrawlerOptions.requestList and CheerioCrawlerOptions.requestQueue are used, the instance first processes URLs from the RequestList and automatically enqueues all of them to RequestQueue before it starts their processing. This ensures that a single URL is not crawled multiple times.

The crawler finishes when there are no more Request objects to crawl.

We can use the preNavigationHooks to adjust gotOptions:

preNavigationHooks: [
(crawlingContext, gotOptions) => {
// ...
},
]

By default, CheerioCrawler only processes web pages with the text/html and application/xhtml+xml MIME content types (as reported by the Content-Type HTTP header), and skips pages with other content types. If you want the crawler to process other content types, use the CheerioCrawlerOptions.additionalMimeTypes constructor option. Beware that the parsing behavior differs for HTML, XML, JSON and other types of content. For more details, see CheerioCrawlerOptions.requestHandler.

New requests are only dispatched when there is enough free CPU and memory available, as judged by the crawler's ConcurrencySystem. Concurrency is tuned via the minConcurrency, maxConcurrency and maxRequestsPerMinute options of the CheerioCrawler constructor, or, for finer control, by injecting a pre-configured concurrencySystem.

Example usage

const crawler = new CheerioCrawler({
requestList,
async requestHandler({ request, response, body, contentType, $ }) {
const data = [];

// Do some data extraction from the page with Cheerio.
$('.some-collection').each((index, el) => {
data.push({ title: $(el).find('.some-title').text() });
});

// Save the data to dataset.
await Dataset.pushData({
url: request.url,
html: body,
data,
})
},
});

await crawler.run([
'http://www.example.com/page-1',
'http://www.example.com/page-2',
]);

Index

Crawlers

Other

Other

AddRequestsBatchedOptions

AddRequestsBatchedResult

ApifyLogAdapter

Re-exports ApifyLogAdapter

ArgumentValidationError

BaseCrawleeLogger

BasicCrawler

Re-exports BasicCrawler

BasicCrawlerOptions

BasicCrawlingContext

BLOCKED_STATUS_CODES

ByteCounterStream

CalculatedStatistics

coerceBoolean

Re-exports coerceBoolean

coerceNumber

Re-exports coerceNumber

ConcurrencyConsumer

ConcurrencySystem

ConcurrencySystemOptions

ConfigField

Re-exports ConfigField

Configuration

Re-exports Configuration

ConfigurationInput

ConfigurationOptions

ContextMiddleware

ContextPipeline

Re-exports ContextPipeline

ContextPipelineCleanupError

ContextPipelineInitializationError

ContextPipelineInterruptedError

CpuLoadSignal

Re-exports CpuLoadSignal

CpuLoadSignalOptions

crawleeConfigFields

CrawleeLogger

Re-exports CrawleeLogger

CrawleeLoggerOptions

CrawlerAddRequestsOptions

CrawlerAddRequestsResult

CrawlerRunOptions

CrawlingContext

Re-exports CrawlingContext

createBasicRouter

CreateContextOptions

createFileRouter

Re-exports createFileRouter

createHttpRouter

Re-exports createHttpRouter

CreateSession

Re-exports CreateSession

createStorageTransaction

CriticalError

Re-exports CriticalError

Dataset

Re-exports Dataset

DatasetConsumer

Re-exports DatasetConsumer

DatasetContent

Re-exports DatasetContent

DatasetDataOptions

DatasetExportOptions

DatasetExportToOptions

DatasetIteratorOptions

DatasetJournalEntry

DatasetMapper

Re-exports DatasetMapper

DatasetOptions

Re-exports DatasetOptions

DatasetReducer

Re-exports DatasetReducer

DatasetStats

Re-exports DatasetStats

defaultRoute

Re-exports defaultRoute

DefaultRouteUserData

DefaultStorageIdentifier

EnqueueLinksOptions

EnqueueStrategy

Re-exports EnqueueStrategy

EnqueueStrategyOption

EnqueueUrlsOptions

ErrnoException

Re-exports ErrnoException

ErrorHandler

Re-exports ErrorHandler

ErrorSnapshotter

Re-exports ErrorSnapshotter

ErrorTracker

Re-exports ErrorTracker

ErrorTrackerOptions

EventLoopLoadSignal

EventLoopLoadSignalOptions

EventManager

Re-exports EventManager

EventManagerOptions

EventStatusMessageData

EventType

Re-exports EventType

EventTypeName

Re-exports EventTypeName

ExplicitStorageIdentifier

ExtractLinksOptions

field

Re-exports field

FieldsInput

Re-exports FieldsInput

FieldsOutput

Re-exports FieldsOutput

FileDownload

Re-exports FileDownload

FileDownloadCrawlingContext

FileDownloadErrorHandler

FileDownloadHook

Re-exports FileDownloadHook

FileDownloadRequestHandler

FinalStatistics

Re-exports FinalStatistics

GetUserDataFromRequest

GlobInput

Re-exports GlobInput

GlobObject

Re-exports GlobObject

HTTP_OPTIMIZED_CONCURRENCY_SYSTEM_OPTIONS

HttpCrawler

Re-exports HttpCrawler

HttpCrawlerOptions

HttpCrawlingContext

HttpErrorHandler

Re-exports HttpErrorHandler

HttpHook

Re-exports HttpHook

HttpRequestHandler

IConcurrencySystem

InternalHttpCrawlingContext

InternalHttpHook

Re-exports InternalHttpHook

IProxyConfiguration

IRequestLoader

Re-exports IRequestLoader

IRequestManager

Re-exports IRequestManager

IStatistics

Re-exports IStatistics

IStorage

Re-exports IStorage

JournaledRequest

Re-exports JournaledRequest

JournalEntry

Re-exports JournalEntry

KeyConsumer

Re-exports KeyConsumer

KeyValueStore

Re-exports KeyValueStore

KeyValueStoreIteratorOptions

KeyValueStoreJournalEntry

KeyValueStoreOptions

KeyValueStoreRawRecord

KeyValueStoreStats

LabeledSource

Re-exports LabeledSource

LoadedRequest

Re-exports LoadedRequest

LoadSignal

Re-exports LoadSignal

LoadSignalInfo

Re-exports LoadSignalInfo

LoadSignalsOptions

LoadSignalStartContext

LoadSnapshot

Re-exports LoadSnapshot

LocalEventManager

LocalEventManagerOptions

log

Re-exports log

Log

Re-exports Log

Logger

Re-exports Logger

LoggerJson

Re-exports LoggerJson

LoggerOptions

Re-exports LoggerOptions

LoggerText

Re-exports LoggerText

LogLevel

Re-exports LogLevel

MAX_POOL_SIZE

Re-exports MAX_POOL_SIZE

MemoryLoadSignal

Re-exports MemoryLoadSignal

MemoryLoadSignalOptions

MemoryStorageBackend

MemoryStorageOptions

MinimumSpeedStream

MissingSessionError

NavigationSkippedError

NonRetryableError

parseRetryAfterHeader

parseValue

Re-exports parseValue

PERSIST_STATE_KEY

PersistenceOptions

PersistentRateLimitError

ProxyConfiguration

ProxyConfigurationFunction

ProxyConfigurationOptions

purgeDefaultStorages

PushErrorMessageOptions

RecordOptions

Re-exports RecordOptions

RecoverableState

Re-exports RecoverableState

RecoverableStateOptions

RecoverableStatePersistenceOptions

RegExpInput

Re-exports RegExpInput

RegExpObject

Re-exports RegExpObject

Request

Re-exports Request

RequestHandler

Re-exports RequestHandler

RequestHandlerError

RequestList

Re-exports RequestList

RequestListOptions

RequestListSourcesFunction

RequestListState

Re-exports RequestListState

RequestManagerOpener

RequestManagerTandem

RequestOptions

Re-exports RequestOptions

RequestQueue

Re-exports RequestQueue

RequestQueueJournalEntry

RequestQueueOperationInfo

RequestQueueOperationOptions

RequestQueueOptions

RequestQueueStats

RequestsLike

Re-exports RequestsLike

RequestState

Re-exports RequestState

RequestThrottledError

RequestTransform

Re-exports RequestTransform

RequestValidationError

RequireContextPipeline

ResolvedConfigValues

resolveStorageIdentifier

ResponseLike

Re-exports ResponseLike

RestrictedCrawlingContext

RetryRequestError

RouteOptions

Re-exports RouteOptions

Router

Re-exports Router

RouterHandler

Re-exports RouterHandler

RouterHandlerContext

RouterLabel

Re-exports RouterLabel

RouterRoutes

Re-exports RouterRoutes

RouteSchemas

Re-exports RouteSchemas

RoutesFromSchemas

SchemaIssue

Re-exports SchemaIssue

serializeValue

Re-exports serializeValue

ServiceConflictError

serviceLocator

Re-exports serviceLocator

ServiceLocator

Re-exports ServiceLocator

Session

Re-exports Session

SessionError

Re-exports SessionError

SessionOptions

Re-exports SessionOptions

SessionPool

Re-exports SessionPool

SessionPoolOptions

SessionReuseStrategy

SitemapRequestLoader

SitemapRequestLoaderOptions

SkippedRequestCallback

SkippedRequestReason

SnapshotResult

Re-exports SnapshotResult

SnapshotStore

Re-exports SnapshotStore

Source

Re-exports Source

StateConversion

Re-exports StateConversion

StateValidationError

StatisticPersistedState

Statistics

Re-exports Statistics

StatisticsOptions

StatisticState

Re-exports StatisticState

StatisticStateExtensionOptions

StatusMessageCallback

StatusMessageCallbackParams

StorageBackend

Re-exports StorageBackend

StorageBackendLoadSignal

StorageBackendLoadSignalOptions

StorageIdentifier

StorageInstanceManager

StorageOpenOptions

StorageStatsTracker

StorageTransaction

StorageTransactionOptions

StorageTransactionState

StorageTransactionView

StorageWriteMode

Re-exports StorageWriteMode

StorageWritePolicy

supportsDomainThrottling

SupportsDomainThrottling

SyncStateConversion

SystemInfo

Re-exports SystemInfo

TaskLoopPredicates

ThrottlingRequestManager

ThrottlingRequestManagerOptions

TypedContextAddRequests

TypedContextEnqueueLinks

UrlPatternInput

Re-exports UrlPatternInput

UrlPatternObject

Re-exports UrlPatternObject

useState

Re-exports useState

UseStateOptions

Re-exports UseStateOptions

withDirectStorageAccess

WithRequired

Re-exports WithRequired

withStorageTransaction

CheerioErrorHandler

CheerioErrorHandler<UserData, JSONData, ContextExtension>: ErrorHandler<CrawlingContext, CheerioCrawlingContext<UserData, JSONData> & ContextExtension>

Type parameters

CheerioHook

CheerioHook<UserData, JSONData>: InternalHttpHook<CheerioCrawlingContext<UserData, JSONData>>

Type parameters

CheerioRequestHandler

CheerioRequestHandler<UserData, JSONData>: RequestHandler<CheerioCrawlingContext<UserData, JSONData>>

Type parameters

Page Options