<jupyter_start><jupyter_text>Scraper semanaEl propósito de este scraper extraer las noticias del periodico semana, todos los temas disponibles por la página.Notas: La structura de los hipervinculos posee un :/articulo/Podría usar regex para traer todo lo que posea esto.<jupyter_code>import requests as rq
import streamlit as st
import pandas as pd
from bs4 import BeautifulSoup as bs

url_robots ='https://www.semana.com/robots.txt'
html_robots = rq.get(url_robots).text
print(html_robots)

'''sections = soup.find_all('div', attrs={'class':'card-body'})
section = sections[0]
section.a.get('href')'''
link_news = [section.a.get('href') for section in sections ]
link_news

links =[url_semana+'{}'.format(link) for link in link_news]
links<jupyter_output><empty_output><jupyter_text>NotasPuedo sacar de los topicos una función con st. para crear un navbar y que me selccione las noticias que desea ver por tema<jupyter_code>topics = soup.find_all('h2', attrs={'class':'section-subtitle'})
list_topics = [topic.get_text() for topic in topics]

# Puedo sacar los st co
list_topics

#La URL es url_semana+topic+section
url_semana_topic =  [url_semana+'{}'.format(t) for t in list_topics]
url_semana_topic


'''
Debería definir una función que reciba el string me haga el requests a cada página y de cada tema me 
traiga los links de las noticias.
'''

def daily_news(url):
    # Hago el request
    html_semana = rq.get(url).text
    
    #Creo al sopa
    soup = bs(html_semana,'lxml')
    
    # Extraigo los temas generales de las noticias en forma de lista
    topics = soup.find_all('h2', attrs={'class':'section-subtitle'})
    list_topics = [topic.get_text() for topic in topics]
    
    # Extraigo el nombre de la noticia que proviene del atributo href de cada anchor dentro de los divs contendores.
    sections = soup.find_all('div', attrs={'class':'card-body'})
    section = sections[0]
    section.a.get('href')
    link_news = [section.a.get('href') for section in sections ]
    links =[url+'{}'.format(link) for link in link_news]
    
    return links

link_news = daily_news('https://www.semana.com/')
link_news



'''
data =[]
for i, nota in enumerate(notas):
    print(f'Scrapeadno nota{i}/{len(notas)})
    data.append(scrape_nota(nota))

'''

df = pd.DataFrame(link_news)
df


notas =[]
for i, link in enumerate(link_news):
    try:
        response = rq.get(link)
        if response.status_code == 200:
            soup = bs(response.text, 'lxml')
            notas.extend()
    except Exception as e:
        print("No existe noticia")
        
           
    
    print(link)<jupyter_output>https://www.semana.com//semana-tv/semana-noticias/articulo/presidente-duque-recuerda-al-ministro-carlos-holmes-trujillo/202133/
https://www.semana.com//nacion/articulo/en-vivo-presidente-ivan-duque-habla-sobre-la-muerte-de-carlos-holmes-trujillo/202126/
https://www.semana.com//nacion/articulo/fallecio-el-ministro-de-defensa-carlos-holmes-trujillo-victima-de-covid-19/202102/
https://www.semana.com//nacion/articulo/honrando-su-nombre-y-legado-superaremos-estos-dificiles-momentos-familia-de-carlos-holmes-trujillo/202140/
https://www.semana.com//nacion/articulo/el-tik-tak-de-maria-isabel-el-triste-adios-a-carlos-holmes/202137/
https://www.semana.com//nacion/articulo/fallecio-julio-roberto-gomez-presidente-de-la-confederacion-general-del-trabajo/202110/
https://www.semana.com//nacion/articulo/el-tik-tak-de-maria-isabel-quien-podra-suceder-al-ministro-carlos-holmes-trujillo/202110/
https://www.semana.com//nacion/articulo/luto-en-casanare-murio-johana-chala-secretaria-de-hacienda-del-departam[...]
{'fraction_non_alphanumeric': 0.13224737713970183, 'fraction_numerical': 0.01435670900055218, 'mean_word_length': 4.110014104372356, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 10, 'lorem ipsum': 0, 'www.': 10, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '190575', 'license': 'MIT', 'n_tokens_mistral': 1440, 'n_tokens_neox': 1395, 'n_words': 269, 'path': 'NoteBooks/Curso de WebScraping/Unificado/DIY/Scraper Semana.ipynb', 'repo_name': 'Alejandro-sin/Learning_Notebooks', 'size': '3622'}