使用BeautifulSoup打印目录中所有html文件的内容

时间:2019-05-04 09:56:46

标签: python python-3.x web-scraping beautifulsoup

我使用BeautifulSoup打开了一个包含200个html文件的目录,但是当我尝试使用print(soup.prettify())打印all目录的内容时,它仅显示一个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 个答案:

答案 0 :(得分:1)

模块查找与指定模式匹配的所有路径名(请参见documentation)。因此,通过使用通配符*,将 dir_path 参数作为匹配所有HTML文件名的模式传递。尝试做:

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

答案 1 :(得分:0)

这里的问题是您要传递目录路径到glob而不是文件路径规范(请参阅documentation for glob.glob())。假设您要解析student目录中的每个HTML文件,则可以将路径定义为:

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

请注意通配符*,这意味着dir_path将与student目录中的任何HTML文件匹配。