Skip to content

Instantly share code, notes, and snippets.

@jtomori
Last active January 11, 2024 21:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtomori/63ab5080a4214e689febc0b172d020e7 to your computer and use it in GitHub Desktop.
Save jtomori/63ab5080a4214e689febc0b172d020e7 to your computer and use it in GitHub Desktop.
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()
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