Last active
January 11, 2024 21:09
-
-
Save jtomori/63ab5080a4214e689febc0b172d020e7 to your computer and use it in GitHub Desktop.
Sort https://www.casio.com/intl/watches/ by thickness
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
import urllib.request | |
import concurrent.futures | |
from urllib.error import HTTPError | |
def load_url_parse(url, timeout=10): | |
"""Load the page from the passed url and search for dimensions.""" | |
try: | |
with urllib.request.urlopen(url, timeout=timeout) as conn: | |
page = conn.read().decode("utf-8") | |
return url, re.search('<div class="p-product_detail-spec-accordion__panel-item-cont">(.* mm)</div>', page).group(1) | |
except HTTPError: | |
return url, "99 × 99 × 9999 mm" # A palceholder for errors | |
def main(): | |
# Open "Watches CASIO.html" downloaded from https://www.casio.com/intl/watches/ (scroll to the bottom to make sure all watches are loaded) | |
with open("Watches CASIO.html", "r", encoding="utf-8") as f: | |
html_file = f.read() | |
# Find watch links | |
links = re.findall('<a href="(https://www.casio.com/intl/watches/.*?/product\..*?)">', html_file) | |
# Download watch pages, read their dimensions | |
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as ex: | |
results = list(ex.map(load_url_parse, links)) | |
# Sort by thickness | |
get_thickness = lambda x: float(x[1].split()[4]) | |
results_sorted = sorted(results, key=get_thickness) | |
# Report results | |
for watch in results_sorted: | |
print(f"{watch[0]}: {get_thickness(watch)} mm") | |
if __name__ == "__main__": | |
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
https://www.casio.com/intl/watches/sheen/product.SHE-4543GL-2A/: 5.9 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4546PG-3A/: 5.9 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4546PG-4A/: 5.9 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4543GL-8A/: 5.9 mm | |
https://www.casio.com/intl/watches/casio/product.A700W-1A/: 6.0 mm | |
https://www.casio.com/intl/watches/casio/product.A700WG-9A/: 6.0 mm | |
https://www.casio.com/intl/watches/casio/product.A700WM-7A/: 6.0 mm | |
https://www.casio.com/intl/watches/casio/product.A700WMG-9A/: 6.0 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4559G-8A/: 6.2 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4559PG-4A/: 6.2 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4559BD-1A/: 6.2 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4559GL-8A/: 6.2 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4556PG-2A/: 6.2 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4562BM-2A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4562M-8A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4562PGM-5A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4539GM-3A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4539PM-2A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4539PM-5A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4540CM-3A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4539CGM-4A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4539M-7A/: 6.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4540CGM-4A/: 6.4 mm | |
https://www.casio.com/intl/watches/casio/product.LA670WEM-7/: 7.3 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-3AV/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-4A2V/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-9AV/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-2024VM-7C/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-2024VMG-3C/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-2024VMG-7C/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-2024VMR-9C/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-2A1V/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-2A2V/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-4AV/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145D-7BV/: 7.4 mm | |
https://www.casio.com/intl/watches/casio/product.MTP-B145G-9AV/: 7.4 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4554BD-8A/: 7.5 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4554D-8A/: 7.5 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4554GY-5A/: 7.5 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4554GYM-8A/: 7.5 mm | |
https://www.casio.com/intl/watches/sheen/product.SHE-4554PGM-4A/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-2023VMB-1C/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007D-1B/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007D-7B/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007G-9B/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007L-1B/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007L-7B1/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007L-7B2/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007L-9B/: 7.5 mm | |
https://www.casio.com/intl/watches/casio/product.LTP-V007SG-9B/: 7.5 mm | |
... | |
https://www.casio.com/intl/watches/gshock/product.GA-700SC-3A/: 18.5 mm | |
https://www.casio.com/intl/watches/gshock/product.GA-700SKC-1A/: 18.5 mm | |
https://www.casio.com/intl/watches/gshock/product.GA-700BP-1A/: 18.5 mm | |
https://www.casio.com/intl/watches/gshock/product.GM-6900BAPE-1/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.MRG-BF1000E-1A9/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.MRG-BF1000R-1A/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.GM-6900GDA-9/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.GM-6900SG-9/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.GM-6900SCM-1/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.GM-6900B-4/: 18.6 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900NNJ-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001SF-7/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6600PC-5/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001RG-3/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001RG-4/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900JT-3/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6640RE-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900GL-4/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900SBY-2/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900RGB-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001MVA-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001MVB-8/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.G-B001MVE-9/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900Y-9/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900TD-4/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900BWD-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900SK-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.DW-6900BB-1/: 18.7 mm | |
https://www.casio.com/intl/watches/gshock/product.GBD-H2000-1A/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GBD-H2000-1A9/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GBD-H2000-1B/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GBD-H2000-2/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GG-B100Y-1A/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GG-B100-1A/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GG-B100-1A3/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GG-B100-1A9/: 19.4 mm | |
https://www.casio.com/intl/watches/gshock/product.GPR-H1000-1/: 20.3 mm | |
https://www.casio.com/intl/watches/gshock/product.GPR-H1000-9/: 20.3 mm | |
https://www.casio.com/intl/watches/gshock/product.GBD-H1000-1A7/: 20.4 mm | |
https://www.casio.com/intl/watches/casio/clock/product.ID-15SA-5/: 37.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-133-5/: 39.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-05-1/: 40.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-05-7/: 40.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-126-5B/: 40.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-151-1/: 41.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-151-5/: 41.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-152-1/: 41.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-152-5/: 41.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-06-1/: 41.0 mm | |
https://www.casio.com/intl/watches/casio/clock/product.IQ-06-7/: 41.0 mm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment