Curso de Fundamentos de Web Scraping con Python y Xpath

Clases del Curso de Fundamentos de Web Scraping con Python y Xpath

Instruido por:
Facundo García Martoni
Facundo García Martoni
Básico
2 horas de contenido
Ver la ruta de aprendizaje
Scraper de noticias
Proyecto del curso
Scraper de noticias

Crea un Script para almacenar diariamente las noticias de cualquier página web. En este curso utilizaremos un periódico colombiano que servirá para futuros análisis de datos o desarrollo de aplicaciones web.

Curso de Fundamentos de Web Scraping con Python y Xpath

Curso de Fundamentos de Web Scraping con Python y Xpath

Progreso del curso:0/21contenidos(0%)

Contenido del Curso
Tutoriales de estudiantes
Preguntas de estudiantes

Progreso del curso:0/21contenidos(0%)

Introducción al web scraping

Material Thumbnail

¿Qué es el web scraping?

02:06 min

Material Thumbnail

¿Por qué aprender web scraping hoy?

03:05 min

Material Thumbnail

Python: el lenguaje más poderoso para extraer datos

03:21 min

Fundamentos de la web

Material Thumbnail

Entender HTTP

07:02 min

Material Thumbnail

¿Qué es HTML?

08:08 min

Material Thumbnail

Robots.txt: permisos y consideraciones al hacer web scraping

05:41 min

XML Path Language

Material Thumbnail

XML Path Language

03:35 min

Material Thumbnail

Tipos de nodos en XPath

05:18 min

Material Thumbnail

Expresiones en XPath

08:18 min

Material Thumbnail

Predicados en Xpath

05:34 min

Material Thumbnail

Operadores en Xpath

05:51 min

Material Thumbnail

Wildcards en Xpath

06:11 min

Material Thumbnail

In-text search en Xpath

08:21 min

Material Thumbnail

Aplicando lo aprendido

08:52 min

Proyecto: scraper de noticias

Material Thumbnail

Un proyecto para tu portafolio: scraper de noticias

10:08 min

Material Thumbnail

Construcción de las expresiones de XPath

10:29 min

Material Thumbnail

Obteniendo los links de los artículos con Python

10:56 min

Material Thumbnail

Guardando las noticias en archivos de texto

14:53 min

Conclusiones

Material Thumbnail

Cómo continuar tu ruta de aprendizaje

02:13 min

nuevosmás votadossin responder
Renzo Guillermo Verdeguer Mendoza
Renzo Guillermo Verdeguer Mendoza
Estudiante

Si dentro del “p” hay negritas o subrayadas como aria para tomarlos en cuenta?
Captura.PNG

0
Ulises Chustek
Ulises Chustek
Estudiante

Todo funciona a la perfección, pero me encuentro con un error, el cual ya sé a que se debe, pero no se me ocurre ninguna forma “elegante” de solucionar el problema, el error en cuestión, esta en que hay algunas noticias que contienen signos de interrogación, y al momento de guardar la noticia intenta hacerlo con dicho signo, y es algo que no se puede hacer en un nombre de archivo.
Dejo la linea de error que me da por esas clase de noticias:

<OSError: [Errno 22] Invalid argument: '19-07-2021/¿Con cuáles servicios seestán reactivando los clubes sociales en diferentes ciudades?.txt'> 

Dejo adjunto el código por si alguien tiene para hacer alguna sugerencia, tanto del código o alguna forma de solucionar el error anteriormente mencionado. Gracias

<import requests
import lxml.html as html
import os
import datetime

HOME_URL = 'https://www.larepublica.co/'

XPATH_LINK_TO_ARTICLE = '//text-fill[not(@class)]/a/@href'
XPATH_TITTLE = '//div[@class="mb-auto"]//span/text()'
XPATH_SUMMARY = '//div[@class = "lead"]/p/text()'
XPATH_BODY = '//div[@class = "html-content"]/p[not(@class)]/text()'defparse_notice(link, today):try:
        response = requests.get(link)
        if response.status_code == 200:
            notice = response.content.decode('utf-8')
            parsed = html.fromstring(notice)

            try:
                title = parsed.xpath(XPATH_TITTLE)[1]
                title = title.replace('\"', '')
                summary = parsed.xpath(XPATH_SUMMARY)[0]
                body = parsed.xpath(XPATH_BODY)
            except IndexError:
                returnwithopen(f'{today}/{title}.txt', 'w', encoding='utf-8') as f:
                f.write(title)
                f.write('\n\n')
                f.write(summary)
                f.write('\n\n')
                for p in body:
                    f.write(p)
                    f.write('\n')
        else:
            raise ValueError(f'Error:{response.status_code}')
    except ValueError as ve:
        print(ve)
        


defparse_home():try:
        response = requests.get(HOME_URL)
        if response.status_code == 200:
            home = response.content.decode('utf-8')
            parsed = html.fromstring(home)
            links_to_notices = parsed.xpath(XPATH_LINK_TO_ARTICLE)
            #print(links_to_notices)

            today = datetime.date.today().strftime('%d-%m-%Y')
            ifnot os.path.isdir(today):
                os.mkdir(today)

            for link in links_to_notices:
                parse_notice(link, today)
        else:
            raise ValueError(f'Error: {response.status_code}')
    except ValueError as ve:
        print(ve)

defrun():
    parse_home()

if __name__ == '__main__':
    run()> 
1
Luis Cuevas
Luis Cuevas
Estudiante

Estoy intentando extraer la info pero no me ha resultado. Sólo me crea la carpeta
Este es el codigo xpath para extraer titulos, resumen y cuerpo

XPATH_LINK_TO_ARTICLE = '//h2/a/@href'XPATH_TITLE = '//h2/span/text()'XPATH_SUMMARY = '//div[@class="lead"]/p/text()'XPATH_BODY = '//div[@class="html-content"]/p[not(@class)]/text()'

Desde ya les agradezco la ayuda u orientación

1
Luis Hernando Sendoya Serrato
Luis Hernando Sendoya Serrato
Estudiante

¿Si el periódico exige suscripción, el código funciona?

1
Iván Edoardo Gil García
Iván Edoardo Gil García
Estudiante

¿La raíz es el único lugar donde se almacena robots.txt? pregunto porque he entrado a una página buscándolo y no está. ¿En ese caso tengo libertad de hacer web scrapping en toda la web?

1
Juan David Blanco Vergara
Juan David Blanco Vergara
Estudiante

tengo una pagina que por más que busque y meta codigo y cumpla con los parametros de scrapeo que uso en otras paginas, ésta no se deja scrapear y hago el awaitForSelector y luego type al id donde está el input para escribir y no hace nada y aparte se queda ahi hasta que la consola dice: TimeoutError: waiting for selector #rcp-zipcode-check failed: timeout 30000ms exceeded. He intentado de todo con este pagina y no se deja scrapear, saben algo que me puede ayudar?

2
Carlos J. Schmilinsky T.
Carlos J. Schmilinsky T.
Estudiante

Me estaba dando problemas el código usando el formato día-mes-año y tuve que cambiarlo por strftime(’%m-%d-%Y’) para que funcionase, alguno de ustedes sabe la razón ?

1
Carlos J. Schmilinsky T.
Carlos J. Schmilinsky T.
Estudiante

Tengo un subrayado sinuoso en amarillo debajo de lxml.html y me arroja el siguiente mensaje de error , Import “lxml.html” could not be resolved , alguien sabe cómo resolver esto?

2
Carlos J. Schmilinsky T.
Carlos J. Schmilinsky T.
Estudiante

Algo pasa con mi consola con Windows 10, de hace unas semanas acá la consola no me acepta py al principio, sólo funciona si escribo python , algo se rompió y desconozco qué hacer, alguien sabe algo de esto?

1
Sebastián Pineda Duque
Sebastián Pineda Duque
Estudiante

¿El web scraping es la mejor alternativa de obtener información de un sitio web que no tenga una API Rest?

1