我使用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')
答案 0 :(得分:1)
glob模块查找与指定模式匹配的所有路径名(请参见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文件匹配。