webcomix
Description
webcomix is a webcomic downloader that can additionally create a .cbz (Comic Book ZIP) file once downloaded.
Notice
This program is for personal use only. Please be aware that by making the downloaded comics publicly available without the permission of the author, you may be infringing upon various copyrights.
Installation
Dependencies
- Python (3.10 or newer)
- click
- scrapy (Some additional steps might be required to include this package and can be found here)
- scrapy-playwright
- scrapy-fake-useragent
- tqdm
- Playwright browsers (for JavaScript-dependent websites with
-joption): runpython -m playwright install chromium
Process
End user
- Install Python 3
- Install the command line interface tool with
pip install webcomixor useuvx
Developer
- Install Python 3
- Clone this repository and open a terminal in its directory
- Install uv with
pip install uv - Download the dependencies by running
uv sync - Install pre-commit hooks with
pre-commit install
Usage
webcomix [OPTIONS] COMMAND [ARGS]
Global Flags
help
Show the help message and exit.
Version
Show the version number and exit.
Commands
comics
Shows all predefined comics which can be used with the download command.
download
Downloads a predefined comic. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic.
search
Searches for an XPath that can download the whole comic. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic,-s, which verifies only the provided page of the comic, -y, which skips the verification prompt, and -j, which runs the javascript on pages before downloading.
custom
Downloads a user-defined comic. To download a specific comic, you'll need a link to the first page, an XPath expression giving out the link to the next page and an XPath expression giving out the link to the image. More info here. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic, -s, which verifies only the provided page of the comic, and -y, which skips the verification prompt.
Examples
webcomix download xkcdwebcomix search xkcd --start-url=http://xkcd.com/1/webcomix custom --cbz(You will be prompted about other needed arguments)webcomix custom xkcd --start-url=http://xkcd.com/1/ --next-page-xpath="//a[@rel='next']/@href" --image-xpath="//div[@id='comic']//img/@src" --cbz(Same as before, but with all arguments declared beforehand)
Making an XPath selector
Using an HTML inspector, spot a html path to the next link's href attribute/comic image's src attribute.
e.g.: //div[@class='foo']/img/@src
This will select the src attribute of the first image whose class is: foo
Note: webcomix works best on static websites, since scrapy(the framework we use to travel web pages) doesn't process Javascript.
To make sure your XPath is correct, you have to go into scrapy shell, which should be downloaded when you've installed webcomix.
scrapy shell <website> --> Use the website's url to go to it.
> response.body --> Will give you the html from the website.
> response.xpath --> Test an xpath selection. If you get [], this means your XPath expression hasn't gotten anything from the webpage.
Contribution
The procedure depends on the type of contribution:
- If you simply want to request the addition of a comic to the list of supported comics, make an issue with the label "Enhancement".
- If you want to request the addition of a feature to the system or a bug fix, make an issue with the appropriate label.
Running the tests
To run the tests, you have to use the pytest command in the webcomix folder.
Metadata
Release files for webcomix 4.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| webcomix-4.0.2.tar.gz | 332.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| webcomix-4.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 682.2 kB
Release files / webcomix-4.0.2.tar.gz
| Download URL | webcomix-4.0.2.tar.gz |
|---|---|
| Size | 332.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f0dc078050eb18086c7ad8bfef953f93634379e5767f0f5a50ad4d9d5caf947
|
|
BLAKE2b-256 checksum How to use checksums |
869f5857dae9917f0b4c1c24ab1cd6ead68f6d0a9f0bf411feb0fa19470d745b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logRelease files / webcomix-4.0.2-py3-none-any.whl
| Download URL | webcomix-4.0.2-py3-none-any.whl |
|---|---|
| Size | 349.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4689b295e3f599a0c9b0948720b56563fcc7215c43c3020baf2b5adfb5838576
|
|
BLAKE2b-256 checksum How to use checksums |
48606df1cae8b540dc639459b47857ca643b38441ca7a399953d4dc849ca9b76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency log