Nov-14-2021, 09:00 PM
import re from collections import namedtuple import bs4 import requests MAKEMKV_BASE = "https://www.makemkv.com/download/" VERSION_REG = re.compile(r"(\d+\.\d+\.\d+)") def parse_version(file_name: str) -> str: if match := VERSION_REG.search(file_name): return match.group(1) else: return "" MakeMKV = namedtuple("makemkv", "url version version_tuple os") def get_makemv(): content = requests.get(MAKEMKV_BASE).content doc = bs4.BeautifulSoup(content, "lxml") selector = "div#content > ul.bullets > li > a" for element in doc.select(selector, href=True): href = element["href"] if href.endswith(".txt"): continue version_str = parse_version(href) version_tuple = tuple(map(int, version_str.split("."))) name = element.text.lower() if "windows" in name: os_type = "windows" elif "mac os x" in name: os_type = "macos" else: os_type = "unkown" yield MakeMKV(href, version_str, version_tuple, os_type) for result in get_makemv(): print(result.os, result.version, result.url)The inspector from Firefox helps a lot to find the elements.
I used this information to make the selector.
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
All humans together. We don't need politicians!