Advertisement
marlar

extract_league_score.py

Dec 29th, 2024
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.53 KB | Source Code | 0 0
  1. import requests
  2. import re
  3.  
  4. URL = 'https://metalligaen.dk/'
  5.  
  6. # CSS-selector til det ønskede element
  7. SELECTOR = r'<section\s+class="league-score spacing-bottom">(.*?)</section>'
  8.  
  9. # Sti hvor den færdige HTML skal gemmes
  10. OUTPUT_PATH = './www/league_score.html'  # Opdater denne sti
  11.  
  12. CUSTOM_CSS = """
  13. <style>
  14. *,*::before,*::after{box-sizing:border-box;}
  15. section{display:block;}
  16. h1{margin-top:0;margin-bottom:0.5rem;}
  17. table{border-collapse:collapse;}
  18. .spacing-bottom{margin-bottom:30px;}
  19. .league-score .league-score__heading{position:relative;margin-bottom:0;padding:8px 10px 5px;border-bottom:4px solid #006B84;overflow:hidden;color:white;font-size:18px;font-weight:bold;line-height:21px;text-transform:uppercase;}
  20. .league-score .league-score__heading:before{content:'';display:block;height:100%;width:70px;transform:skewX(-25deg);position:absolute;right:-10px;top:0;}
  21. .league-score .league-score__heading.league-score__heading--trophy:after{content:'';background-image:url("https://metalligaen.dk/assets/icons/trophy-icon.svg");background-repeat:no-repeat;background-position:center center;width:50px;height:100%;background-color:transparent;position:absolute;right:0;top:0;}
  22. .league-score .league-score-table{width:100%;text-align:center;}
  23. .league-score .league-score-table .league-score-table__head{font-size:14px;line-height:16px;}
  24. .league-score .league-score-table .league-score-table__head .league-score-table__head-row{background-color:rgba(255, 255, 255, 0.8);border-top:1px solid white;border-bottom:1px solid white;}
  25. .league-score .league-score-table .league-score-table__head .league-score-table__head-data{padding:7px 3px;}
  26. .league-score .league-score-table .league-score-table__head .league-score-table__head-data.league-score-table__head-data--not-centered{text-align:left;}
  27. .league-score .league-score-table .league-score-table__body{font-size:14px;line-height:16px;color:white;background-color:white;}
  28. .league-score .league-score-table .league-score-table__body .league-score-table__body-data{padding:7px;border:1px solid white;}
  29. .league-score .league-score-table .league-score-table__body .league-score-table__body-data:first-child{border-left:none;}
  30. .league-score .league-score-table .league-score-table__body .league-score-table__body-data:last-child{border-right:none;}
  31. .league-score .league-score-table .league-score-table__body .league-score-table__body-data.league-score-table__body-data--not-centered{text-align:left;}
  32. .league-score .league-score-table .league-score-table__body .league-score-table__body-data.league-score-table__body-data--long-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:1px;width:100%;}
  33. /*! CSS Used from: Embedded */
  34. .league-score .league-score-table .league-score-table__head{color:#006B84;}
  35. .league-score .league-score__heading{border-color:#006B84;}
  36. .league-score .league-score__heading,.league-score-table .league-score-table__body .league-score-table__body-data:first-child{background-color:#00A9D1;}
  37. .league-score .league-score__heading:before,.league-score .league-score-table .league-score-table__head,.league-score .league-score-table .league-score-table__body-row{background-color:#006B84;}
  38. /*! CSS Used from: Embedded */
  39. table td{padding:0;border:none;}
  40. </style>
  41. """
  42.  
  43. def fetch_page(url):
  44.     try:
  45.         response = requests.get(url)
  46.         response.raise_for_status()
  47.         return response.text
  48.     except requests.exceptions.RequestException as e:
  49.         print(f"Fejl ved hentning af siden: {e}")
  50.         return None
  51.  
  52. def extract_element(html, selector):
  53.     match = re.search(selector, html, re.DOTALL)
  54.     if match:
  55.         return match.group(0)
  56.     else:
  57.         print("Det ønskede element blev ikke fundet.")
  58.         return None
  59.  
  60. def create_html(content, custom_css):
  61.     html_template = f"""
  62. <!DOCTYPE html>
  63. <html lang="da">
  64. <head>
  65.    <meta charset="UTF-8">
  66.    <title>League Score</title>
  67.    {custom_css}
  68. </head>
  69. <body>
  70.    {content}
  71. </body>
  72. </html>
  73. """
  74.     return html_template
  75.  
  76. def save_html(html, path):
  77.     try:
  78.         with open(path, 'w', encoding='utf-8') as file:
  79.             file.write(html)
  80.         print(f"HTML gemt som {path}")
  81.     except IOError as e:
  82.         print(f"Fejl ved skrivning til fil: {e}")
  83.  
  84. def main():
  85.     page_content = fetch_page(URL)
  86.     if not page_content:
  87.         return
  88.  
  89.     element_html = extract_element(page_content, SELECTOR)
  90.     if not element_html:
  91.         return
  92.  
  93.     final_html = create_html(element_html, CUSTOM_CSS)
  94.  
  95.     save_html(final_html, OUTPUT_PATH)
  96.  
  97. if __name__ == "__main__":
  98.     main()
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement