{"id":13484281,"url":"https://github.com/lxml/lxml","last_synced_at":"2026-07-10T14:10:26.274Z","repository":{"id":1386644,"uuid":"1353927","full_name":"lxml/lxml","owner":"lxml","description":"The lxml XML toolkit for Python","archived":false,"fork":false,"pushed_at":"2026-07-02T11:44:17.000Z","size":21798,"stargazers_count":3041,"open_issues_count":16,"forks_count":619,"subscribers_count":81,"default_branch":"master","last_synced_at":"2026-07-05T13:04:37.784Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://lxml.de/","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lxml.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.txt","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"scoder","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":"pypi/lxml","community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2011-02-11T05:43:11.000Z","updated_at":"2026-07-03T03:26:22.000Z","dependencies_parsed_at":"2026-02-27T00:03:03.227Z","dependency_job_id":null,"html_url":"https://github.com/lxml/lxml","commit_stats":{"total_commits":6090,"total_committers":166,"mean_commits":36.68674698795181,"dds":0.4824302134646963,"last_synced_commit":"7be20eb3931010b42dfa81427c45fa716f52954c"},"previous_names":[],"tags_count":159,"template":false,"template_full_name":null,"purl":"pkg:github/lxml/lxml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxml%2Flxml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxml%2Flxml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxml%2Flxml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxml%2Flxml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lxml","download_url":"https://codeload.github.com/lxml/lxml/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxml%2Flxml/sbom","scorecard":{"id":55790,"data":{"date":"2025-08-04","repo":{"name":"github.com/lxml/lxml","commit":"56f0eef494e8a30721c3a7bb2766dee752de16ef"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":6.7,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/29 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/wheels.yml:42","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/wheels.yml:185","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:21","Info: found token with 'none' permissions: .github/workflows/wheels.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: OSSFuzz integration found","Info: PythonAtherisFuzzer integration found: src/lxml/tests/fuzz_xml_parse.py:8"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:206: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:267: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels.yml:123: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels.yml:147: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels.yml:158: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels.yml:204: update your workflow using https://app.stepsecurity.io/secureworkflow/lxml/lxml/wheels.yml/master?enable=pin","Warn: pipCommand not pinned by hash: tools/ci-run.sh:73","Warn: pipCommand not pinned by hash: tools/ci-run.sh:74","Warn: pipCommand not pinned by hash: tools/ci-run.sh:77","Warn: pipCommand not pinned by hash: tools/ci-run.sh:78","Warn: pipCommand not pinned by hash: tools/ci-run.sh:81","Warn: pipCommand not pinned by hash: tools/ci-run.sh:83","Warn: pipCommand not pinned by hash: tools/ci-run.sh:84","Warn: pipCommand not pinned by hash: tools/ci-run.sh:87","Warn: pipCommand not pinned by hash: .github/workflows/wheels.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/wheels.yml:57","Info:  15 out of  17 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of  10 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact lxml-6.0.0 not signed: https://api.github.com/repos/lxml/lxml/releases/228036949","Warn: release artifact lxml-5.4.0 not signed: https://api.github.com/repos/lxml/lxml/releases/214057917","Warn: release artifact lxml-5.3.2 not signed: https://api.github.com/repos/lxml/lxml/releases/210564402","Warn: release artifact lxml-5.3.1 not signed: https://api.github.com/repos/lxml/lxml/releases/199268827","Warn: release artifact lxml-5.3.0 not signed: https://api.github.com/repos/lxml/lxml/releases/169629312","Warn: release artifact lxml-6.0.0 does not have provenance: https://api.github.com/repos/lxml/lxml/releases/228036949","Warn: release artifact lxml-5.4.0 does not have provenance: https://api.github.com/repos/lxml/lxml/releases/214057917","Warn: release artifact lxml-5.3.2 does not have provenance: https://api.github.com/repos/lxml/lxml/releases/210564402","Warn: release artifact lxml-5.3.1 does not have provenance: https://api.github.com/repos/lxml/lxml/releases/199268827","Warn: release artifact lxml-5.3.0 does not have provenance: https://api.github.com/repos/lxml/lxml/releases/169629312"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}}]},"last_synced_at":"2025-08-15T00:42:43.544Z","repository_id":1386644,"created_at":"2025-08-15T00:42:43.544Z","updated_at":"2025-08-15T00:42:43.544Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35196763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:01:21.834Z","updated_at":"2026-07-10T14:10:26.255Z","avatar_url":"https://github.com/lxml.png","language":"Python","funding_links":["https://github.com/sponsors/scoder","https://tidelift.com/funding/github/pypi/lxml","https://tidelift.com/subscription/pkg/pypi-lxml","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=R56JE3VCPDA9N"],"categories":["Python","HTML Manipulation","🧩 HTML \u0026 XML Parsing","HTML Processing","Software","HTML Generation","Data Serialization Formats","📚 فهرست"],"sub_categories":["Ruby","Some projects with more that 5 000 lines of Cython code","وب اسکرپینگ","Libraries"],"readme":"What is lxml?\n=============\n\nlxml is the most feature-rich and easy-to-use library for processing XML and HTML in the Python language.\nIt's also very fast and memory friendly, just so you know.\n\nFor an introduction and further documentation, see `doc/main.txt`_.\n\nFor installation information, see `INSTALL.txt`_.\n\nFor the issue tracker, see https://bugs.launchpad.net/lxml\n\nSupport the project\n-------------------\n\nlxml has been downloaded from the `Python Package Index`_\nmillions of times and is also available directly in many package\ndistributions, e.g. for Linux or macOS.\n\n.. _`Python Package Index`: https://pypi.python.org/pypi/lxml\n\nMost people who use lxml do so because they like using it.\nYou can show us that you like it by blogging about your experience\nwith it and linking to the project website.\n\nIf you are using lxml for your work and feel like giving a bit of\nyour own benefit back to support the project, consider sending us\nmoney through GitHub Sponsors, Tidelift or PayPal that we can use\nto buy us free time for the maintenance of this great library, to\nfix bugs in the software, review and integrate code contributions,\nto improve its features and documentation, or to just take a deep\nbreath and have a cup of tea every once in a while.\nPlease read the Legal Notice below, at the bottom of this page.\nThank you for your support.\n\n.. class:: center\n\n  Support lxml through `GitHub Sponsors \u003chttps://github.com/users/scoder/sponsorship\u003e`_\n\n  via a `Tidelift subscription \u003chttps://tidelift.com/subscription/pkg/pypi-lxml\u003e`_\n\n  or via PayPal:\n\n  |Donate|_\n\n.. _`Donate`: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=R56JE3VCPDA9N\n\nPlease `contact Stefan Behnel \u003chttp://consulting.behnel.de/\u003e`_\nfor other ways to support the lxml project,\nas well as commercial consulting, customisations and trainings on lxml and\nfast Python XML processing.\n\nNote that we are not accepting donations in crypto currencies.\nMuch of the development and hosting for lxml is done in a carbon-neutral way\nor with compensated and very low emissions.\nCrypto currencies do not fit into that ambition.\n\n.. |Donate| image:: https://lxml.de/paypal_btn_donateCC_LG.png\n            :width: 160\n            :height: 47\n            :alt: Donate to the lxml project\n\n.. _`doc/main.txt`: https://github.com/lxml/lxml/blob/master/doc/main.txt\n.. _`INSTALL.txt`: http://lxml.de/installation.html\n\n`GitHub Actions \u003chttps://docs.github.com/en/actions\u003e`_\nsupports the lxml project with their build and CI servers.\n\n\nProject income report\n---------------------\n\nlxml has `well over 250 million downloads \u003chttps://pypistats.org/packages/lxml\u003e`_\nper month on PyPI.\n\n* Total project income in 2025: EUR 3868.43  (322.37 € / month, 1.46 € / 1,000,000 downloads)\n\n  - Tidelift: EUR 2642.35\n  - thanks.dev: EUR 449.78\n  - Paypal: EUR 388.15\n\n* Total project income in 2024: EUR 3032.06  (252.57 € / month, 2.09 € / 1,000,000 downloads)\n\n  - Tidelift: EUR 2777.34\n  - thanks.dev: EUR 205.77\n  - Paypal: EUR 48.95\n\n* Total project income in 2023: EUR 2821,16  (235.09 € / month, 2.93 € / 1,000,000 downloads)\n\n  - Tidelift: EUR 2738.46\n  - thanks.dev: EUR 44.60\n  - Paypal: EUR 38.10\n\n* Total project income in 2022: EUR 2566.38  (213.87 € / month, 3.56 € / 1,000,000 downloads)\n\n  - Tidelift: EUR 2539.38\n  - Paypal: EUR 24.32\n\n* Total project income in 2021: EUR 4640.37  (386.70 € / month)\n\n  - Tidelift: EUR 4066.66\n  - Paypal: EUR 223.71\n  - other: EUR 350.00\n\n* Total project income in 2020: EUR 6065,86  (506.49 € / month)\n\n  - Tidelift: EUR 4064.77\n  - Paypal: EUR 1401.09\n  - other: EUR 600.00\n\n* Total project income in 2019: EUR 717.52  (59.79 € / month)\n\n  - Tidelift: EUR 360.30\n  - Paypal: EUR 157.22\n  - other: EUR 200.00\n\n\nLegal Notice for Donations\n--------------------------\n\nAny donation that you make to the lxml project is voluntary and\nis not a fee for any services, goods, or advantages.  By making\na donation to the lxml project, you acknowledge that we have the\nright to use the money you donate in any lawful way and for any\nlawful purpose we see fit and we are not obligated to disclose\nthe way and purpose to any party unless required by applicable\nlaw.  Although lxml is free software, to the best of our knowledge\nthe lxml project does not have any tax exempt status.  The lxml\nproject is neither a registered non-profit corporation nor a\nregistered charity in any country.  Your donation may or may not\nbe tax-deductible; please consult your tax advisor in this matter.\nWe will not publish or disclose your name and/or e-mail address\nwithout your consent, unless required by applicable law.  Your\ndonation is non-refundable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxml%2Flxml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flxml%2Flxml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxml%2Flxml/lists"}