VIU-Sitemap-Parser
Parse XML/Plaintext/RSS Sitemaps
Intent for creating that package
We've searched for a python based Sitemap parser which supports all main types of sitemap formats. It should also be as flexible as possible by declaring sitemaps etc. We haven't found one that fits our requirements, so we created this one.
It's not a big project - so we try to leave the code as simple as possible.
The result contains all information we found (e.g. HREF Lang etc.) They are not normalized and for each sitemap format different. See examples.
Features
- Supports XML sitemaps, sitemap index files, RSS feeds, Atom feeds, and plain text sitemaps
- Automatically detects and decompresses gzipped sitemaps (.gz files)
- Handles both local files and remote URLs
- Preserves all metadata from sitemap entries
Installation
pip install VIU-Sitemap-parser
Usage - single files
from viusitemapparser.vsp import get_sitemap_contents
sitemap, sitemap_entries = get_sitemap_contents('https://run.mocky.io/v3/d8cb86d5-0400-4860-a053-78996f9ee6b2')
Add Headers (optional):
sitemap, sitemap_entries = get_sitemap_contents('https://run.mocky.io/v3/d8cb86d5-0400-4860-a053-78996f9ee6b2', headers={'User-Agent': 'Mozilla/5.0'})
# Gzipped sitemaps are automatically supported
sitemap, sitemap_entries = get_sitemap_contents('https://example.com/sitemap.xml.gz')
sitemap, sitemap_entries = get_sitemap_contents('local_sitemap.xml.gz')
Variable "sitemap" contains a dict with information about the sitemap itself - e.g.
{'file_name': 'https://run.mocky.io/v3/d8cb86d5-0400-4860-a053-78996f9ee6b2',
'file_headers': {'Content-Type': 'text/xml; charset=UTF-8', 'Date': 'Tue, 27 Jul 2021 15:05:03 GMT', 'Content-Length': '939', 'Sozu-Id': '01FBM7YVDJEWJP4670MWBRFXBW'},
'source_type': 'remote', # remote or local
'file_error': None, # If there was an error getting the file (e.g. 404 you will get the information about it here)
'file_received': True, # Final boolean if we get an file to check
'sitemap_type': 'xml_sitemap' # one of xml_sitemap, xml_sitemap_index, rss_feed, atom_feed, plain_text,
# invalid_file_format
}
"sitemap_entries" is an iterator over the lines in the sitemap file. The content of the lines is different by sitemap_type.
Here is an example if you just want the URLs out of the Sitemap files. The names are equal to the names in the Sitemap file.
for entry in sitemap_entries:
if sitemap.get("sitemap_type") == 'xml_sitemap':
print(entry.get('loc'))
elif sitemap.get("sitemap_type") == 'xml_sitemap_index':
print(entry.get('loc'))
elif sitemap.get("sitemap_type") == 'rss_feed':
print(entry.get('link'))
elif sitemap.get("sitemap_type") == 'atom_feed':
print(entry.get('link'))
elif sitemap.get("sitemap_type") == 'plain_text':
print(entry)
Take a look on https://github.com/VIU-one/VIU-Sitemap-Parser/blob/main/tests/test_sitemap_entries.py to see how the response of different formats looks.
Usage - with iterator over sitemap_index files
TODO
Alternatives
https://github.com/mediacloud/ultimate-sitemap-parser
More about the Sitemaps format
https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap?hl=de
https://developers.google.com/search/blog/2014/10/best-practices-for-xml-sitemaps-rssatom
Video in Sitemaps: https://developers.google.com/search/docs/advanced/sitemaps/video-sitemaps
Images in Sitemaps: https://developers.google.com/search/docs/advanced/sitemaps/image-sitemaps
HREF Lang in Sitemaps: https://developers.google.com/search/docs/advanced/crawling/localized-versions#sitemap
Google News Sitemaps: https://developers.google.com/search/docs/advanced/sitemaps/news-sitemap?hl=de
Metadata
Release files for viu-sitemap-parser 0.2.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| viu_sitemap_parser-0.2.11.tar.gz | 11.2 kB | Without provenance | Details for viu_sitemap_parser-0.2.11.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| viu_sitemap_parser-0.2.11-py3-none-any.whl | Python 3 | none | any | Details for viu_sitemap_parser-0.2.11-py3-none-any.whl |
Total release size: 19.3 kB
Release files / viu_sitemap_parser-0.2.11.tar.gz
| Download URL | viu_sitemap_parser-0.2.11.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ddbdc0030bbe5f6f1b52d1f0c45487ee62b1eac05f425dadad861a00155d43f
|
|
BLAKE2b-256 checksum How to use checksums |
22d94081592afce615caaa22df3cf877a50877172f5eff5778656d044251060e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / viu_sitemap_parser-0.2.11-py3-none-any.whl
| Download URL | viu_sitemap_parser-0.2.11-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
155388ee21e09819000f30923487f784163f97561e8e591b93fa4de7fc9a316e
|
|
BLAKE2b-256 checksum How to use checksums |
64efefdff893301c911d7c3945640c93b98344550295121966f368a701d77f34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Security for viu-sitemap-parser 0.2.11
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.