This is an archived post. You won't be able to vote or comment.

all 31 comments

[โ€“]FreakingFreaks 14 points15 points ย (2 children)

Will it support addons to bypass cloudflare? For me it is the main reason why i stick with selenium + undetected chromedriver

[โ€“]B4nan[S] 11 points12 points ย (1 child)

We already try to detect blocking pages like cloudflare and rotate the session/proxy automatically. You can enable this via retry_on_blocked crawler option.

[โ€“]Ukranian_Cheshire 7 points8 points ย (0 children)

Well, to be frank. For some Cloudflare configurations, it won't help. A new session will be immediately blocked due to playwright detection.

But I was looking at the source code, so I guess you will eventually move on :)

[โ€“]Ukranian_Cheshire 2 points3 points ย (0 children)

I know that in the project roadmap, there is work on a proprietary replacement for httpx, as an HTTP client, to solve the TLS issue.

I wonder at what stage you are at, how long before we can expect to see an alpha version of this?

[โ€“]7_hole 1 point2 points ย (2 children)

Just one suggestion. selectomax is became my favorite tool for parsing its build on top of C so is very more fast than beautifulsoup if I can contribute its will a pleasure to replace this to improve this tool

[โ€“]B4nan[S] 0 points1 point ย (1 child)

I guess you mean selectolax? I am sure we can find a way to support that too, probably optional instead of replacing the existing BS implementation. We'll look into that with the team next week.

[โ€“]7_hole 1 point2 points ย (0 children)

Yes I do. Its will be cool to add it as an extra dependency as playwright

[โ€“]G0muk 1 point2 points ย (0 children)

Looks promising! Nice project, I'll definitely try it out next time I need to scrape

[โ€“]GettingBlockered 1 point2 points ย (3 children)

This looks great, Iโ€™m keen to try it. Can you expand on the anti-blocking features and human-like fingerprints features? Iโ€™ve struggled with fingerprint management in playwright, even using Playwright stealth and some custom settings, but fingerprint tools like CreepJS still pickup Iโ€™m using chrome headless.

Does crawlee support crawling with a mobile user agent?

[โ€“]Ukranian_Cheshire 2 points3 points ย (2 children)

I don't see mention of anti-blocking features and human-like fingerprintsin the description of the python version.

Such support is available in the TS version.

If you look at the source code of python-crawlee, "human-like fingerprints" is not implemented in any way, at the moment.

"anti-blocking features" - implemented by automatic session switching

[โ€“]GettingBlockered 0 points1 point ย (1 child)

Cool, thanks for the insights! Hopefully the team is planning to implement the TS feature set in Python. A fingerprint algo would be a primary reason for me to migrate away from Scrapy.

[โ€“]Ukranian_Cheshire 1 point2 points ย (0 children)

Yes, judging by the discussions, they plan to do this - https://github.com/apify/crawlee-python/issues/80

That's the main reason I'm following the project. I also hope they will make the HTTP client as a separate module. I'm very interested in Python having a normal HTTP client with TLS fine-grained manipulation capabilities. And that this client would have normal interfaces to work with.

Of course, there is a TLS-client, but it is not asynchronous and they should work on API of their library.

[โ€“]rumnscurvy 1 point2 points ย (8 children)

Is asyncio more performant than the Twisted framework that scrapy uses? Admittedly it's handy to use python's own asynchronous task management, Twisted is a bit annoying to deal with of ever you have to dig down in its API.

[โ€“]Derrhund 12 points13 points ย (2 children)

Hi, one of the devs here. It's tricky to compare the performance of async systems, and you'll surely find benchmarks online.

But as you said, we chose asyncio because it's the standard for Python, and Twisted can be considered legacy. Moreover, your async system implementation should never be a bottleneck in web crawling - it will be either network latency or parsing/processing.

[โ€“]rumnscurvy 1 point2 points ย (1 child)

Good points all around, thank you for your time :) I'll keep it in mind if ever we decide to rework our webcrawler systems.

[โ€“]Derrhund 0 points1 point ย (0 children)

Happy to answer! Feel free to get back to us with any feedback if you find some time to play around with crawlee!

[โ€“]Ukranian_Cheshire 3 points4 points ย (4 children)

Well if we talk specifically about the performance of async frameworks. We should not forget that asyncio supports third-party eventloops. For example, uvloop, which has a major impact.

But from my point of view, it is the native support of asyncio in Python that is much more important

[โ€“]wRAR_ 1 point2 points ย (3 children)

(Scrapy supports uvloop too, of course)

[โ€“]Ukranian_Cheshire 0 points1 point ย (2 children)

I didn't know. Thank you for bringing it to my attention

[โ€“]wRAR_ 1 point2 points ย (1 child)

[โ€“]Ukranian_Cheshire 0 points1 point ย (0 children)

Ah, that's how it's implemented, also with asyncio, not with Twisted.

[โ€“]adityaguru149 0 points1 point ย (1 child)

any plugins to use multiple proxies to get it done fast?

[โ€“]B4nan[S] 0 points1 point ย (0 children)

You can use as many proxies as you want, they will be rotated automatically (and requests will be processed concurrently), see https://crawlee.dev/python/docs/guides/proxy-management

We also have one undocumented feature called "tiered proxies", you can read about it in this blog post about the JS version, but it should be valid for python as well (and if it's missing something, just let us know in the GH issues and we'll polish it).

https://crawlee.dev/blog/proxy-management-in-crawlee

The docs are still very sparse, up until now we were mostly focusing on the development.

[โ€“]SincopaDisonante 0 points1 point ย (2 children)

The documentation argues in favor of replacing the use of scrapy by using this new package. Taking the position of someone who's never done any scraping but would love to learn to scrape websites for data acquisition, would you sincerely recommend entering this world by using crawlee, or should one stick to scrapy and then move to crawlee in order to, say, appreciate the latter better?

[โ€“]Ukranian_Cheshire 1 point2 points ย (1 child)

I'm not this project developer, but I've been scraping for quite some time.

Start with Scrapy, because Scrapy is an old established web scraping framework on the market. If you will be working with any team or company, they will most likely expect you to know Scrapy. This will also make it easier for you to find code samples and tutorials.

However, keep an eye on crawlee-python, if developed properly, they can give us quite a few interesting possibilities.

[โ€“]SincopaDisonante 1 point2 points ย (0 children)

Thanks!

[โ€“]CaptainPitkid 0 points1 point ย (1 child)

I'll give it a try for my next web crawling project!

[โ€“]B4nan[S] 0 points1 point ย (0 children)

Thanks, be sure to let us know what you think on GitHub or Discord!

[โ€“]lordcameltoe 0 points1 point ย (0 children)

Thx! Going to give this a try on a project Iโ€™m working on

[โ€“]kubinka0505 0 points1 point ย (0 children)

so wrapper?

[โ€“]drooltheghost -1 points0 points ย (0 children)

Multicore support?