Grab and recursively parse website sitemaps, robots.txt, and other related files.
Project description
Sitemap Utility Suite
A Python-based utility suite designed to fetch and analyze sitemaps and other well-known files from websites.
Table of Contents
Features
- Fetch and parse XML sitemaps from websites
- Recursively traverse sitemap indices
- Extract sitemap URLs from robots.txt files
- Fetch common well-known files (robots.txt, humans.txt, security.txt)
- Robust error handling and logging
- User-agent spoofing for web requests
Installation
-
Clone the repository:
git clone https://github.com/yourusername/sitemap-utility-suite.git cd sitemap-utility-suite -
Install the required dependencies:
pip install -r requirements.txt
Installation with documentation dependencies
To install Sitemap Grabber with documentation dependencies:
-
Ensure you have flit installed:
pip install flit -
Install the package with documentation dependencies:
flit install --deps develop --extras docs
For developers who want to contribute to the project:
- Install the package with both documentation and development dependencies:
flit install --deps develop --extras "docs,dev"
Alternatively, if you prefer using pip:
pip install -e ".[docs,dev]"
This will install the package in editable mode along with all necessary dependencies for building the documentation and development tools.
Usage
Here's a basic example of how to use the SitemapGrabber:
from sitemap_grabber import SitemapGrabber
# Initialize the SitemapGrabber with a website URL
grabber = SitemapGrabber("https://example.com")
# Fetch all sitemaps
grabber.get_all_sitemaps()
# Print the discovered sitemap URLs
for url in grabber.sitemap_urls:
print(url)
To fetch well-known files:
from well_known_files import WellKnownFiles
# Initialize the WellKnownFiles with a website URL
wkf = WellKnownFiles("https://example.com")
# Fetch robots.txt
robots_txt = wkf.fetch("robots.txt")
print(robots_txt)
# Fetch security.txt
security_txt = wkf.fetch("security.txt")
print(security_txt)
Components
SitemapGrabber
The SitemapGrabber class is responsible for discovering and fetching XML sitemaps from a given website. It can:
- Extract sitemap URLs from robots.txt
- Check common sitemap locations
- Recursively traverse sitemap indices
- Handle relative and absolute URLs
WellKnownFiles
The WellKnownFiles class fetches common well-known files from websites, including:
- robots.txt
- humans.txt
- security.txt
It includes caching to avoid redundant requests and can handle various edge cases in HTTP responses.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
For more information or to report issues, please visit the GitHub repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sitemap_grabber-2.0.1.tar.gz.
File metadata
- Download URL: sitemap_grabber-2.0.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04ce3abc35d8385765e67a6cd5f82adf632d1107d0c33302a9abff617eb12c84
|
|
| MD5 |
f496e5f2dc493b19acd4b6d2400b52c9
|
|
| BLAKE2b-256 |
4f5466efedf0420998f8a85eeeb9b0dac8a3f8e59d2e50f4e7ec617abad5cb7f
|
File details
Details for the file sitemap_grabber-2.0.1-py3-none-any.whl.
File metadata
- Download URL: sitemap_grabber-2.0.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35130e08eab1558255d25fbbe2a0cb97f3482d78813d453d075703b0806a4f25
|
|
| MD5 |
c7a973e0f5f453295d9769f4534622fb
|
|
| BLAKE2b-256 |
15f3343498c3fa7c42f1f1ff09ef1843b9d2b3418aa895d97f6d23866ac5727b
|