English | Dansk | Bahasa Malaysia
Modernisering
| Oprindelig løsning |
Moderne løsning |
Hvorfor |
Én main.py |
Lag i src/scraping_python_org (domain, application, infrastructure, presentation) |
Forretningsreglerne afhænger ikke af Selenium; use casen testes med en fake |
| Lang absolut XPath |
CSS-selector .event-widget li |
Kort, læsbar, tåler ændringer i layoutet |
Manuel tæller c |
enumerate |
Mindre kode, ingen fejl med off-by-one |
detach=True efterfulgt af driver.quit() |
Headless Chrome i en context manager, der altid lukker |
Ingen efterladte browservinduer, kører uden skrivebord |
selenium uden version i requirements.txt |
pyproject.toml med minimumsversioner |
Reproducerbare installationer |
| Ingen tests |
Enhedstests og en headless browsertest på en gemt side |
Ændringer er trygge |
| Ingen typeannotationer |
mypy --strict, ruff |
Fejl findes før kørsel |
Hvad du får ud af det: en scraper, du kan ændre med ro i sindet; samme idé
som i lektionen, men bygget som et rigtigt projekt.