Печать содержимого всех HTML-файлов в каталоге с BeautifulSoup - PullRequest
1 голос
/ 04 мая 2019

Я открыл каталог, содержащий 200 html-файлов, используя BeautifulSoup, но когда я пытаюсь распечатать содержимое всего каталога с помощью print(soup.prettify()), он показывает только содержимое только одного HTML-файла.То же самое происходит, если я пытаюсь soup.find('title'), он загружает только заголовок того же HTML-файла, что и раньше.Ты можешь сказать мне, почему ?Python не показывает никаких ошибок, и я не могу понять, что не так в моем коде.


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')

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Модуль находит все пути, соответствующие указанному шаблону (см. Документацию ). Итак, передайте аргумент dir_path в качестве шаблона, который соответствует всем именам файлов HTML, используя подстановочный знак *. Попробуйте сделать:

dir_path = '/Users/martinagalletti/Desktop/parte 2 data mining/train/student/*.html' 
0 голосов
/ 04 мая 2019

Проблема в том, что вы передаете путь к каталогу glob вместо указания пути к файлу (см. Документацию для glob.glob()). Предполагая, что вы хотите проанализировать каждый HTML-файл в каталоге student, вы можете определить путь как:

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

Обратите внимание на подстановочный знак *, который означает, что dir_path будет соответствовать любому HTML-файлу в каталоге student.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...