MMOON commited on
Commit
e569caa
·
verified ·
1 Parent(s): d553d20

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +11 -15
src/streamlit_app.py CHANGED
@@ -1,4 +1,4 @@
1
- # streamlit_app_cxc_final.py
2
  import streamlit as st
3
  import requests
4
  from bs4 import BeautifulSoup
@@ -13,6 +13,7 @@ HEADERS = {
13
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
14
  }
15
  TIMEOUT = 30
 
16
  # --- Fin Configuration ---
17
 
18
  # Configuration de la page
@@ -21,7 +22,8 @@ st.set_page_config(page_title="Codex CXC Viewer", page_icon="📋", layout="wide
21
  @st.cache_data(ttl=3600)
22
  def extract_cxc_documents():
23
  """
24
- Fonction pour extraire les Codes de Pratique (CXC) avec leurs liens PDF directs depuis le HTML.
 
25
  """
26
  st.info("Extraction des documents depuis le site Codex...")
27
  documents = []
@@ -65,7 +67,7 @@ def extract_cxc_documents():
65
  except ValueError:
66
  year = 0
67
 
68
- # --- EXTRACTION DU LIEN PDF DIRECT ---
69
  # Le lien PDF est dans la 5ème cellule (index 4)
70
  pdf_cell = cells[4]
71
  pdf_url = None
@@ -75,19 +77,13 @@ def extract_cxc_documents():
75
  if link_tag:
76
  href = link_tag.get('href')
77
  if href:
78
- # 1. Décoder l'URL encodée (ex: & -> &)
79
- decoded_href = urllib.parse.unquote(href)
 
80
 
81
- # 2. Extraire l'URL réelle après 'url='
82
- if 'url=' in decoded_href:
83
- # Extraire la partie après 'url='
84
- url_part = decoded_href.split('url=', 1)[1]
85
- # 3. Décoder à nouveau l'URL extraite
86
- final_pdf_url = urllib.parse.unquote(url_part)
87
- pdf_url = final_pdf_url
88
- else:
89
- # Si pas de 'url=', utiliser le href décodé directement
90
- pdf_url = decoded_href
91
 
92
  # Si aucun lien PDF n'a été trouvé, on met un placeholder
93
  if not pdf_url:
 
1
+ # streamlit_app_cxc_href_final.py
2
  import streamlit as st
3
  import requests
4
  from bs4 import BeautifulSoup
 
13
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
14
  }
15
  TIMEOUT = 30
16
+ BASE_URL = "https://www.fao.org" # Pour construire l'URL absolue
17
  # --- Fin Configuration ---
18
 
19
  # Configuration de la page
 
22
  @st.cache_data(ttl=3600)
23
  def extract_cxc_documents():
24
  """
25
+ Fonction pour extraire les Codes de Pratique (CXC) avec leurs liens PDF.
26
+ Utilise le href brut trouvé dans le HTML, le décode et construit l'URL absolue.
27
  """
28
  st.info("Extraction des documents depuis le site Codex...")
29
  documents = []
 
67
  except ValueError:
68
  year = 0
69
 
70
+ # --- EXTRACTION DU LIEN PDF DIRECTEMENT DU HREF ---
71
  # Le lien PDF est dans la 5ème cellule (index 4)
72
  pdf_cell = cells[4]
73
  pdf_url = None
 
77
  if link_tag:
78
  href = link_tag.get('href')
79
  if href:
80
+ # 1. Décoder les entités HTML (& -> &)
81
+ # BeautifulSoup le fait déjà lors de l'analyse, mais on s'assure
82
+ decoded_href = urllib.parse.unquote(href) # Utile si des %XX sont présents
83
 
84
+ # 2. Construire l'URL absolue
85
+ # href="/fao-who-codexalimentarius/..." -> "https://www.fao.org/fao-who-codexalimentarius/..."
86
+ pdf_url = urllib.parse.urljoin(BASE_URL, decoded_href)
 
 
 
 
 
 
 
87
 
88
  # Si aucun lien PDF n'a été trouvé, on met un placeholder
89
  if not pdf_url: