Apify & CrawleeA&CApify & Crawlee
Powered by
unique-blueU
Apify & Crawlee•3y ago•
13 replies
unique-blue

Crawler for SPAs (Single Page Application)

Hi all!

My target is to scrap a website composed of SPAs (Single Page Application) and it looks like existing browser crawlers (i.e. PlaywrightCrawler and PuppeteerCrawler) are not a good fit as each request is processed in a new page, which is a waste of resources.

What I need is to open one browser page and execute multiple XHR / fetch requests to their unofficial API, until I get blocked and need to re-open a new browser page to continue until all requests have been processed.
Note that need a browser to pass fingerprint checks and use the website's internal library to digitally sign each request to their unofficial API.

I'm thinking to solve my need by writing a
SinglePageBrowserCrawler
SinglePageBrowserCrawler
that extends BasicCrawler and works similarly to BrowserCrawler but manage browser pages differently.

Is it a good idea? Is there a way to do this in a better way?

Thanks in advance for your feedback!
PlaywrightCrawler | API | Crawlee
Provides a simple framework for parallel crawling of web pages
using headless Chromium, Firefox and Webkit browsers with Playwright.
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
Playwright
Playwright
uses headless brow...
PlaywrightCrawler | API | Crawlee
MDN Web Docs
XMLHttpRequest (XHR) - MDN Web Docs Glossary: Definitions of Web-re...
XMLHttpRequest (XHR) is a JavaScript API to create HTTP requests. Its methods provide the ability to send network requests between the browser and a server.
XMLHttpRequest (XHR) - MDN Web Docs Glossary: Definitions of Web-re...
MDN Web Docs
fetch() global function - Web APIs | MDN
The global fetch() method starts the process of fetching a resource from the network, returning a promise that is fulfilled once the response is available.
fetch() global function - Web APIs | MDN
BasicCrawler | API | Crawlee
Provides a simple framework for parallel crawling of web pages.
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.

BasicCrawler
BasicCrawler
is a low-level tool that requires the user to implement the page
download and data extraction functionality themselves.
If we want a c...
BasicCrawler | API | Crawlee
Apify & Crawlee banner
Apify & CrawleeJoin
This is the official developer community of Apify and Crawlee.
14,091Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements
Recent Announcements
ellativity

**Update to Store Publishing Terms and Acceptable Use Policy** Due to an influx of fraudulent reviews recently, Apify's Legal team has taken some actions to protect developers, customers, and Apify, by updating the Store Publishing Terms and Acceptable Use Policy. Please pay special attention to the updated terms in section 4 of the Store Publishing Terms here: https://docs.apify.com/legal/store-publishing-terms-and-conditions Additionally, please review the changes to section 2 of the Acceptable Use Policy here: https://docs.apify.com/legal/acceptable-use-policy If you have any questions, please ask them in <#1206131794261315594> so everyone can see the discussion. Thanks!

ellativity · 3w ago

ellativity

Hi @everyone I'm hanging out with the Creator team at Apify in https://discord.com/channels/801163717915574323/1430491198145167371 if you want to discuss Analytics and Insights!

ellativity · 4w ago

ellativity

2 things for <@&1092713625141137429> members today: 1. The Apify developer rewards program is open for registrations: https://apify.notion.site/developer-rewards This is the program where you will earn points for marketing activities. The rewards are still TBC, but the real purpose of the program is to help you structure your marketing activities and efforts. In the coming weeks, I will be populating that link with guides to help you identify the best ways to market your Actors, as well as scheduling workshops and office hours to help you create content and develop your own marketing strategy. 2. At 2PM CET (in about 80 minutes) there will be an office hour with the team behind Insights and Analytics, who want your feedback on how to improve analytics for you. Join us in https://discord.com/channels/801163717915574323/1430491198145167371 to share your ideas!

ellativity · 4w ago

Similar Threads

Playwright Crawler fails on undefined page
popular-magentaPpopular-magenta / crawlee-js
4y ago
Docusaurus crawler
popular-magentaPpopular-magenta / crawlee-js
3y ago
Reset Crawler
skinny-azureSskinny-azure / crawlee-js
4y ago
How to inject storage state into crawler's page
primary-violetPprimary-violet / crawlee-js
3y ago