Skip to content

Commit

Permalink
Update app.py
Browse files Browse the repository at this point in the history
  • Loading branch information
MattJeanLouis authored May 23, 2023
1 parent ddc1bf4 commit 91a3fa5
Showing 1 changed file with 44 additions and 65 deletions.
109 changes: 44 additions & 65 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,87 +1,66 @@
import streamlit as st
import requests
from bs4 import BeautifulSoup
import pyperclip
from urllib.parse import urljoin, urlparse
import html2text

import os
import pkg_resources

REQUIRED_PACKAGES = [
'protobuf==3.20.0'
]

os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'python'


def get_sub_urls(url):
try:
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.RequestException as e:
st.write(f"Erreur lors de la récupération de l'URL : {e}")
return []

soup = BeautifulSoup(response.content, 'html.parser')
def crawl(url, base_url):
# Récupérer le contenu du site
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Rechercher tous les liens
sub_urls = []
for link in soup.find_all('a'):
href = link.get('href')
if href and href.startswith('http'): # Vérifier si l'URL est absolue
sub_urls.append(href)

# Ignorer les liens qui n'ont pas d'attribut href ou qui sont des ancres
if href is None or href.startswith('#'):
continue

# Joindre l'URL du lien avec l'URL de base du site pour obtenir un lien complet
full_url = urljoin(base_url, href)

# Vérifier si le lien est sur le même domaine
if urlparse(full_url).netloc == urlparse(base_url).netloc:
if full_url not in visited_urls:
visited_urls.add(full_url)
sub_urls.append(full_url)
return sub_urls

def extract_text(url):
try:
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.content, "html.parser")
return soup.get_text()
else:
return None
except requests.exceptions.TooManyRedirects:
st.write(f"Trop de redirections lors de la tentative d'accès à l'URL : {url}")
return None
def url_to_markdown(url):
# Récupérer le contenu du site
response = requests.get(url)
response.encoding = 'utf-8' # Spécifiez l'encodage si nécessaire
html_content = response.text

# Utiliser BeautifulSoup pour analyser le contenu HTML
soup = BeautifulSoup(html_content, 'html.parser')

def main():
url = st.text_input("Veuillez entrer l'URL : ")
if url:
visited_urls = set() # Pour garder une trace des URL visitées
summary = [] # Liste pour stocker le sommaire
all_content = [] # Liste pour stocker tout le contenu
# Utiliser html2text pour convertir le contenu HTML en Markdown
h = html2text.HTML2Text()
# Ignorer les liens dans le document
h.ignore_links = True
markdown_content = h.handle(soup.prettify())

main_text = extract_text(url)
visited_urls.add(url)
return markdown_content

summary.append(f"URL principale : {url}") # Ajouter l'URL principale au sommaire
all_content.append(main_text) # Ajouter le contenu principal à all_content
def main():
base_url = st.text_input("Veuillez entrer l'URL : ")
if base_url:
global visited_urls
visited_urls = set() # Pour garder une trace des URL visitées

st.write(f"Texte extrait de l'URL principale : {url}\n{main_text}\n")
# Utilisation des nouvelles méthodes
markdown_content = url_to_markdown(base_url)
st.markdown(markdown_content) # Utilisation de st.markdown pour afficher le contenu

sub_urls = get_sub_urls(url)
sub_urls = crawl(base_url, base_url)

st.write("\nListe des sous-URLs :")
for sub_url in sub_urls:
if sub_url not in visited_urls: # Vérifier si l'URL a déjà été visitée
with st.expander(sub_url): # Utilisation de st.expander pour créer un volet déroulant pour chaque sous-URL
text = extract_text(sub_url)
if text:
st.write(f"Texte extrait de l'URL : {sub_url}\n{text}\n")
all_content.append(text) # Ajouter le contenu de la sous-URL à all_content
else:
st.write(f"Échec de l'extraction du texte à partir de l'URL : {sub_url}\n")
visited_urls.add(sub_url) # Ajouter l'URL à la liste des URL visitées

summary.append(f"Sous-URL : {sub_url}") # Ajouter la sous-URL au sommaire

with st.expander("Sommaire"): # Afficher le sommaire dans un volet déroulant
for item in summary:
st.write(item)

with st.expander("Tout le contenu"): # Afficher tout le contenu dans un volet déroulant
all_content_str = "\n".join(all_content)
st.write(all_content_str)
with st.expander(sub_url): # Utilisation de st.expander pour créer un volet déroulant pour chaque sous-URL
markdown_content = url_to_markdown(sub_url)
st.markdown(markdown_content) # Utilisation de st.markdown pour afficher le contenu

if __name__ == "__main__":
main()

0 comments on commit 91a3fa5

Please sign in to comment.