Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +11 -15
src/streamlit_app.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
#
|
| 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
|
|
|
|
| 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
|
| 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
|
| 79 |
-
|
|
|
|
| 80 |
|
| 81 |
-
# 2.
|
| 82 |
-
|
| 83 |
-
|
| 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:
|