File size: 3,724 Bytes
568edc9
 
 
 
 
 
693ebd3
a29b545
8ee20af
0df7d95
568edc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6f38a9c
 
 
568edc9
0c5f148
568edc9
 
 
 
 
 
 
bfc9733
568edc9
 
 
 
bfc9733
568edc9
bfc9733
 
6f38a9c
568edc9
 
 
 
 
 
 
 
 
 
 
94900cd
7c5afe3
 
7bd4753
7c5afe3
 
a85d2c8
 
 
 
373dc9b
5769f93
7bd4753
 
7c5afe3
7bd4753
2b29433
e554724
b36ad05
 
138d6ee
ebf18ac
a85d2c8
b36ad05
 
 
 
a85d2c8
b36ad05
 
 
568edc9
 
 
 
693ebd3
568edc9
 
 
6f38a9c
 
568edc9
 
 
 
 
 
 
 
 
 
847727e
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "scrapling"
# Static version instead of a dynamic version so we can get better layer caching while building docker, check the docker file to understand
version = "0.4.2"
description = "Scrapling is an undetectable, powerful, flexible, high-performance Python library that makes Web Scraping easy and effortless as it should be!"
readme = {file = "README.md", content-type = "text/markdown"}
license = {file = "LICENSE"}
authors = [
    {name = "Karim Shoair", email = "karim.shoair@pm.me"}
]
maintainers = [
    {name = "Karim Shoair", email = "karim.shoair@pm.me"}
]
keywords = [
    "web-scraping",
    "scraping",
    "automation",
    "browser-automation",
    "data-extraction",
    "html-parsing",
    "undetectable",
    "playwright",
    "selenium-alternative",
    "web-crawler",
    "browser",
    "crawling",
    "headless",
    "scraper",
    "chrome",
]
requires-python = ">=3.10"
classifiers = [
    "Operating System :: OS Independent",
    "Development Status :: 4 - Beta",
    # "Development Status :: 5 - Production/Stable",
    # "Development Status :: 6 - Mature",
    # "Development Status :: 7 - Inactive",
    "Intended Audience :: Developers",
    "Intended Audience :: Information Technology",
    "License :: OSI Approved :: BSD License",
    "Natural Language :: English",
    "Topic :: Internet :: WWW/HTTP",
    "Topic :: Internet :: WWW/HTTP :: Browsers",
    "Topic :: Text Processing :: Markup",
    "Topic :: Text Processing :: Markup :: HTML",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Topic :: Software Development :: Libraries",
    "Topic :: Software Development :: Libraries :: Application Frameworks",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: Implementation :: CPython",
    "Typing :: Typed",
]
dependencies = [
    "lxml>=6.0.2",
    "cssselect>=1.4.0",
    "orjson>=3.11.7",
    "tld>=0.13.2",
    "w3lib>=2.4.0",
    "typing_extensions",
]

[project.optional-dependencies]
fetchers = [
    "click>=8.3.0",
    "curl_cffi>=0.14.0",
    "playwright==1.58.0",
    "patchright==1.58.2",
    "browserforge>=1.2.4",
    "apify-fingerprint-datapoints>=0.11.0",
    "msgspec>=0.20.0",
    "anyio>=4.12.1"
]
ai = [
    "mcp>=1.26.0",
    "markdownify>=1.2.0",
    "scrapling[fetchers]",
]
shell = [
    "IPython>=8.37",  # The last version that supports Python 3.10
    "markdownify>=1.2.0",
    "scrapling[fetchers]",
]
all = [
    "scrapling[ai,shell]",
]

[project.urls]
Homepage = "https://github.com/D4Vinci/Scrapling"
Changelog = "https://github.com/D4Vinci/Scrapling/releases"
Documentation = "https://scrapling.readthedocs.io/en/latest/"
Repository = "https://github.com/D4Vinci/Scrapling"
"Bug Tracker" = "https://github.com/D4Vinci/Scrapling/issues"
"Discord" = "https://discord.gg/EMgGbDceNQ"
"Release Notes" = "https://github.com/D4Vinci/Scrapling/releases"

[project.scripts]
scrapling = "scrapling.cli:main"

[tool.setuptools]
zip-safe = false
include-package-data = true

[tool.setuptools.packages.find]
where = ["."]
include = ["scrapling*"]

[tool.mypy]
python_version = "3.10"
warn_unused_configs = true
ignore_missing_imports = true
check_untyped_defs = true

[tool.pyright]
pythonVersion = "3.10"
typeCheckingMode = "basic"
include = ["scrapling"]
ignore = ["tests", "benchmarks.py"]