Apify & CrawleeA&CApify & Crawlee
Powered by
hurt-tomatoH
Apify & Crawlee•3y ago•
2 replies
hurt-tomato

PlaywrightCrawler New Instance unexpected result

Hi guys, I'm new to crawlee.

I wrap the sample code into a function.
Each time the
getAvailableURLs
getAvailableURLs
function is called, a new instance of the
PlaywrightCrawler
PlaywrightCrawler
class is created and used to crawl the provided URL.

Source Code:
const getAvailableURLs = async (url: string, maxRequestsPerCrawl: number, maxRequestRetries: number, strategy: "all" | "same-hostname" | "same-domain" | "same-origin") => {
    let availableUrls: string[] = [];
    const crawler = new PlaywrightCrawler({
        maxRequestsPerCrawl,
        maxRequestRetries,
        // Use the requestHandler to process each of the crawled pages.
        async requestHandler({ request, enqueueLinks }) {

            await availableUrls.push(request.loadedUrl ? request.loadedUrl : "")


            await enqueueLinks(
                {
                    strategy
                }
            );
        },
    });

    await crawler.run([url])

    return availableUrls
}


let availableUrls = await getAvailableURLs('https://crawlee.dev/', 2, 1, "same-hostname")
console.info(`availableUrls length: ${availableUrls.length} result: ${availableUrls}`)


availableUrls = await getAvailableURLs('https://cheerio.js.org/', 2, 1, "same-hostname")
console.info(`availableUrls length: ${availableUrls.length} result: ${availableUrls}`)
const getAvailableURLs = async (url: string, maxRequestsPerCrawl: number, maxRequestRetries: number, strategy: "all" | "same-hostname" | "same-domain" | "same-origin") => {
    let availableUrls: string[] = [];
    const crawler = new PlaywrightCrawler({
        maxRequestsPerCrawl,
        maxRequestRetries,
        // Use the requestHandler to process each of the crawled pages.
        async requestHandler({ request, enqueueLinks }) {

            await availableUrls.push(request.loadedUrl ? request.loadedUrl : "")


            await enqueueLinks(
                {
                    strategy
                }
            );
        },
    });

    await crawler.run([url])

    return availableUrls
}


let availableUrls = await getAvailableURLs('https://crawlee.dev/', 2, 1, "same-hostname")
console.info(`availableUrls length: ${availableUrls.length} result: ${availableUrls}`)


availableUrls = await getAvailableURLs('https://cheerio.js.org/', 2, 1, "same-hostname")
console.info(`availableUrls length: ${availableUrls.length} result: ${availableUrls}`)

Result:
1st Crawl:
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.

2nd Crawl:
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 0 requests: 0 succeeded, 0 failed.
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 0 requests: 0 succeeded, 0 failed.


Expected Result:
1st Crawl:
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.

2nd Crawl:
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.
INFO  PlaywrightCrawler: Terminal status message: Finished! Total 3 requests: 3 succeeded, 0 failed.


Question
How do I achieve
expected result
expected result
and able to customize
strategy
strategy
,
maxRequestsPerCrawl
maxRequestsPerCrawl
and
maxRequestRetries
maxRequestRetries
by passing in parameters?
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

Multiple instance - PlaywrightCrawler, is it possible?
abstract-purpleAabstract-purple / crawlee-js
16mo ago
New fingerprint per new request with PlaywrightCrawler/Firefox ?
sacred-emeraldSsacred-emerald / crawlee-js
3y ago
PlayWrightCrawler new request results are bleeding into old requests. RequestQueue issue?
cryptorexCcryptorex / crawlee-js
4y ago
PlaywrightCrawler proxy issue
specific-silverSspecific-silver / crawlee-js
17mo ago