Imprimir el contenido de todos los archivos html en un directorio con BeautifulSoup

Abrí un directorio, que contiene 200 archivos html utilizando BeautifulSoup, pero cuando trato de imprimir el contenido de todos los directorios con la impresión(sopa.embellecer()) se muestra sólo el contenido de sólo un archivo HTML. Lo mismo sucede si trato de "sopa.find('title'), sólo carga el título de la misma archivo HTML como antes. Puede decirme por qué ? python no muestra ningún error y no puedo entender lo que está mal en mi código.


import os
from bs4 import BeautifulSoup
import glob
import errno

dir_path = '/Users/martinagalletti/Desktop/parte 2 data mining/train/student'
files = glob.glob(dir_path)
for name in files:
    try:
        with open(name) as f:
            soup = BeautifulSoup(f, "html.parser")
            print(type(soup))
    except IOError as exc:
        if exc.errno != errno.EISDIR:
            raise

print(type(soup))
soup.find('title')

1 Respuestas

  • glhr
    4 de mayo de 2019

    El problema aquí es que usted está pasando una ruta de acceso del directorio glob en lugar de un archivo de especificación de la ruta. Suponiendo que se desea analizar todos los archivos HTML en el student directorio, usted puede definir la ruta de acceso como:

    dir_path = '/Users/martinagalletti/Desktop/parte 2 data mining/train/student/*.html' 
    

    Nota el comodín *, lo que significa que dir_path coincide con cualquier archivo HTML en el student directorio.