Commit Graph
100 Commits
Author SHA1 Message Date
Karim shoair d247b5b691 test: add tests for the spiders system
It's generated by Opus on Claude Code. It's very good as per my review and instructions, but I will have another look later.
2026-01-19 03:46:00 +02:00
Karim shoair 0d003f62e3 ops: update bandit checklist 2026-01-19 03:45:39 +02:00
Karim shoair 1f0f86e3a2 feat(spiders): Add pause/resume system for crawls 2026-01-19 03:43:10 +02:00
Karim shoair acdb39988c ops: update bandit checklist 2026-01-19 03:40:57 +02:00
Karim shoair bf5aa021d4 fix(browsers): solving an issues with leaving playwright loop open when cdp connection fails
This has been causing issues with tests for a long time, and now finally found the reason.
2026-01-18 16:46:48 +02:00
Karim shoair 02c9dffc77 style(spiders): make parse function abstract 2026-01-18 00:01:04 +02:00
Karim shoair afe6b2e97b feat(spiders): Change items hook to make it for processing items + add a stat for this 2026-01-17 20:52:49 +02:00
Karim shoair 41c7a7e793 fix(spiders engine): Improve logging 2026-01-17 19:57:04 +02:00
Karim shoair dac854a129 fix(parser): handle responses with empty body
It makes root's value None
2026-01-13 02:35:26 +02:00
Karim shoair 35d570120a feat(spiders): Add option to logging format and date format 2026-01-12 17:11:52 +02:00
Karim shoair 3466bcab2c feat: add hook to run after collecting an item 2026-01-12 15:58:33 +02:00
Karim shoair e0f94cf7d0 feat(spiders): Add a stream mode to collect items in realtime 2026-01-12 15:53:29 +02:00
Karim shoair 927cfd85ff feat(spiders): The option to start sessions lazily 2026-01-12 02:09:50 +02:00
Karim shoair f2c6216968 style: remove unwanted import from spiders main init file 2026-01-12 01:21:26 +02:00
Karim shoair 72c3c2792a feat(spiders): add simple export system for the results 2026-01-12 01:21:05 +02:00
Karim shoair a17bb1d976 feat(browsers): Add option to retry tabs that gives errors 2026-01-11 23:40:26 +02:00
Karim shoair 5a11c2466b fix: make retry_blocked_request take the response as well 2026-01-11 22:54:17 +02:00
Karim shoair 736873a7c6 feat(spiders): Add logic to detect blocked requests and retry them 2026-01-11 21:56:57 +02:00
Karim shoair 774364b6d3 style(spiders): make the usage of uvloop optional 2026-01-11 19:57:03 +02:00
Karim shoair 0bfdab7158 feat: spiders use uvloop/winloop when available 2026-01-11 18:39:42 +02:00
Karim shoair d5b9ed11b2 fix(browsers): Close pages that give error
This was causing the browser and the whole code to stand still.
2026-01-11 18:34:13 +02:00
Karim shoair 32f4f2adf4 build: Add AnyIO to the dependencies 2026-01-11 17:01:33 +02:00
Karim shoair 059a708b6d feat(spiders system): a prototype of the new spiders system
- A modern spider design that uses AnyIO and asyncio, yet it's very similar to Scrapy spiders API because it's the easiest design for users, and to make it easier for new users.
- Spiders can have multiple sessions per crawl, and users decide which session to use with each request.
- A scheduler system that uses heapq logic.
- The user can set the number of concurrent requests for a spider globally or per domain.
- The user can set a download delay to control the speed of the spider more.
- There's a global function that can be overridden to handle errors for all requests. (Similar to errback in scrapy).
- There's a spider argument to set the allowed domains for the spider to stay in.
- Each spider has a very detailed crawl stats that can be accessed right away from the code after the crawl finishes. Same case with scraped items.
- The whole spider as written as any other script and you just run it. No command-line arguments, and no need to run it from the terminal through the library like other known alternatives.
- Each spider has its own logger that forces sessions to use it.
- Each spider has functions to override that run before start and after close.
- There's a spider argument to set the logging level and another one to make the spider write to a log file.

- This is only the start. A lot more features are coming in the way.
2026-01-11 16:53:18 +02:00
Karim shoair dd5c30c521 feat(response): Option to set the referer as the previous response url. 2026-01-11 03:24:30 +02:00
Karim shoair 1443a469a3 fix: handle a bug with response follow referer flow argument 2026-01-11 03:22:51 +02:00
Karim shoair aa4817f349 feat: Change logger to be flexible enough for the spiders classes 2026-01-11 03:22:20 +02:00
Karim shoair c5bc82deb8 fix(browsers): solve a bug with setting referer on the request level 2026-01-11 03:21:03 +02:00
Karim shoair 8e36962177 ops: add local Claude files to gitignore 2026-01-10 20:41:23 +02:00
Karim shoair 0634f5796c feat(spiders): Add follow function to the response 2026-01-10 20:39:43 +02:00
Karim shoair f80e8828f7 refactor: internal API changes 2026-01-08 01:53:48 +02:00
Karim shoair 3a360acced build: pump version up temporary 2026-01-08 01:37:47 +02:00
Karim shoair 08f3e6efad fix: add missing line 2026-01-08 01:01:00 +02:00
Karim shoair 6553d90e0f ops: update workflows to run for this branch 2026-01-08 00:53:29 +02:00
Karim shoair 9eb5f68fcb test: update tests accordingly 2026-01-08 00:52:35 +02:00
Karim shoair 6a73f9dcd7 refactor: internal API changes to be easily used as indicators for spiders 2026-01-08 00:52:06 +02:00
Karim shoair de79fe80bb v0.3.14 2026-01-03 22:29:20 +02:00
Karim shoair 2f87507afe test: update database test to suite windows 2026-01-03 22:02:03 +02:00
Karim shoair f99baf65f7 test: remove the check for incognito 2026-01-03 01:50:46 +02:00
Karim shoair c8a2456b81 fix(StealthyFetcher): disable incognito mode to solve #123 2026-01-03 01:50:02 +02:00
Karim shoair 30a77de2be build: pump version up and browserforge version 2026-01-03 01:48:34 +02:00
Karim shoair 6ad2ecb9f2 v0.3.13 2026-01-01 22:07:00 +02:00
Karim shoair b5fdb71b52 docs: improving the API reference section 2026-01-01 21:07:20 +02:00
Karim shoair 4947152be2 docs: change docstring style for some methods 2026-01-01 21:06:35 +02:00
Karim shoair 9742b239be docs: fix for rtd build 2026-01-01 17:42:47 +02:00
Karim shoair e275509ece docs: fix for rtd build
test
2026-01-01 17:05:10 +02:00
Karim shoair 185a9c594f docs: fix for rtd build 2026-01-01 17:01:24 +02:00
Karim shoair c6e4482837 docs: Improve docs website 2026-01-01 16:56:57 +02:00
Karim shoair cb5051ca56 docs: update contributing page 2026-01-01 03:18:15 +02:00
Karim shoair 4d478eb84c docs: update the donate page 2026-01-01 03:16:10 +02:00
Karim shoair 2d5e2f41c4 docs: update dev articles 2026-01-01 03:14:12 +02:00
Karim shoair 0a3bb6cfdb docs: update the migrating from BS article 2025-12-31 18:32:34 +02:00
Karim shoair 55ff20c238 docs: update replacing AI article 2025-12-31 18:28:28 +02:00
Karim shoair 7d5b907d6c docs: adding more data to the adaptive feature page 2025-12-31 16:56:57 +02:00
Karim shoair 17202d23a8 docs: Update the MCP server page 2025-12-31 16:32:21 +02:00
Karim shoair ad234165e9 docs: update the cli section 2025-12-31 03:00:26 +02:00
Karim shoair 3b9a6d021e fix: correct cli argument 2025-12-31 03:00:06 +02:00
Karim shoair d4ae6c49c0 docs: update the StealthyFetcher page 2025-12-31 00:22:33 +02:00
Karim shoair f6f0ed4b37 fix(async stealth): wait the coroutine of the bounding box 2025-12-31 00:19:53 +02:00
Karim shoair 33c5633c58 test: correcting tests with the new arguments 2025-12-30 22:06:37 +02:00
Karim shoair 0c7e26ae5c fix(fingerprints): do not create google referer for IPs 2025-12-30 21:58:09 +02:00
Karim shoair a2b5628a73 docs: update DynamicFetcher page 2025-12-29 22:02:01 +02:00
Karim shoair 67e8f4d515 docs: update DynamicFetcher page 2025-12-29 20:48:45 +02:00
Karim shoair e1cac0f69f docs: update requests page 2025-12-29 20:48:32 +02:00
Karim shoair bc420da19b docs: update deps 2025-12-29 20:39:13 +02:00
Karim shoair ee13af9516 build: update deps
and docstrings
2025-12-29 16:08:51 +02:00
Karim shoair 6c25dccb05 docs: updating the Fetcher Basics and the HTTP requests pages 2025-12-28 21:57:21 +02:00
Karim shoair 5e3845f060 docs: shorten docstrings for some functions 2025-12-28 21:56:28 +02:00
Karim shoair b1cd5c5a82 test: fix old assert test 2025-12-28 00:16:37 +02:00
Karim shoair 9bfe744840 fix: remove forgotten unused code 2025-12-28 00:14:47 +02:00
Karim shoair 1b838eabd0 fix: update the cookies type hint for the mcp server 2025-12-28 00:08:44 +02:00
Karim shoair a4ad6b5fce test: remove old test 2025-12-28 00:03:09 +02:00
Karim shoair 09bbd416b8 fix: remove old proxy logic
When I was caching it with the rest of the data
2025-12-28 00:02:50 +02:00
Karim shoair a8e646160f docs: update the parsing section 2025-12-27 23:48:31 +02:00
Karim shoair a35cc4bdd6 docs: updating overview and benchmarks pages with the new changes 2025-12-27 20:51:28 +02:00
Karim shoair fb3a1b4c17 style: removing unused code 2025-12-27 20:50:08 +02:00
Karim shoair 8ca0646172 docs: make the cli section clearer for README files of all languages 2025-12-27 16:55:27 +02:00
Karim shoair 423de087d4 docs: update README for all languages with the new updates 2025-12-27 16:40:47 +02:00
Karim shoair ab76f1bee7 docs: update the website main page 2025-12-27 16:26:30 +02:00
Karim shoair 423755fe82 fix: remove firefox from test workflow 2025-12-27 14:33:24 +02:00
Karim shoair 842718ba94 fix: update shell signatures for the autocompletion
Added missing fields and reordered classes as well for easier comparisons
2025-12-27 14:30:48 +02:00
Karim shoair 2af21e240d test: remove problematic sync tests
The async version are the same tests
2025-12-27 14:02:02 +02:00
Karim shoair 4753743f49 fix: pinning the deps version for tox 2025-12-26 14:44:26 +02:00
Karim shoair 5638755558 ops: update tests workflow accordingly 2025-12-26 03:23:28 +02:00
Karim shoair fdfd5bf96b test: update all tests accordingly 2025-12-26 03:22:56 +02:00
Karim shoair 67c8cb7de3 ops: update tox file accordingly 2025-12-26 03:22:28 +02:00
Karim shoair c5f32e495c ops: update docker file accordingly 2025-12-26 03:22:11 +02:00
Karim shoair ccf97803d5 build: update deps 2025-12-26 03:21:40 +02:00
Karim shoair cfc667f7dc refactor(fetchers)!: Replace Camoufox with patchright and many optimizations
- DynamicFetcher became 20% faster
- StealthyFetcher became 99% faster
- Scrapling size decreased
- Code became ~400 lines shorter
- Most importantly, scrapling is more stable and reliable now.
- Less confusing for new users.
- More...
2025-12-26 03:21:13 +02:00
Karim shoair f9f34e6ee9 fix: improve the handling of useragent in chrome fetcher 2025-12-24 23:08:30 +02:00
Karim shoair b40c16a2cd build: pump version up 2025-12-24 21:35:41 +02:00
Karim shoair 85b327a598 fix: Improve stealth of dynamic browser by pinning Chrome's UA version 2025-12-24 21:34:44 +02:00
Karim shoair 2e5152f790 v0.3.12 2025-12-18 02:21:43 +02:00
Karim shoair a7b55d4a74 test: fix for typo in the workflow 2025-12-18 01:48:47 +02:00
Karim shoair e53f1cb363 build: forcing playwright version
Until the Python driver for patchright 1.57 releases
2025-12-18 01:45:21 +02:00
Karim shoair 580bc5390f test: Adjusting test workflow for GitHub 2025-12-18 01:44:05 +02:00
Karim shoair 1694b44a2b test: adjusting deps versions for tox 2025-12-18 01:30:00 +02:00
Karim shoair 381c4eab7f test: skip checking camoufox browser version if he cache hits
To avoid GitHub repeated rate-limit errors
2025-12-18 01:23:50 +02:00
Karim shoair ecb97d3fd6 docs: add docs for timezone_id argument 2025-12-18 01:16:22 +02:00
Karim shoair 9443ab80ae test: update tests accordingly 2025-12-18 01:14:05 +02:00
Karim shoair 39f544eae4 feat(dynamicSession): add the option to set timezone of the browser 2025-12-18 01:13:31 +02:00