从Web目录而不是单个URL读取

时间:2019-04-28 22:30:08

标签: python beautifulsoup urllib

在Beautiful Soup的帮助下,我有一个Python脚本用于解析网址中的html元素。

我现在想解析目录中的所有html文件,而不是选择每个文件并一个接一个地执行。经过一个周末的修改脚本工作,我碰到了砖墙!

我一直在os.walk的帮助下工作,但是我正在努力与当前的脚本集成。我在想应该有一种方法可以简单地编写一个循环并将我的输入从文件更改为目录?但这是否意味着我不能再使用urllib,因为我的网址现在是文件列表了?

这是我脚本的开始。目录中每个文件中所有已解析的元素都是相同的,因此无需更改其他任何内容。

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = 'http://www.mywebsite.com/src_files/abc1.html'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

任何帮助将不胜感激。预期结果应该就像我在目录中的每个html文件上分别运行当前脚本一样。

1 个答案:

答案 0 :(得分:0)

是的,您不再需要urllib,因为您想解析目录中保存的HTML文件(而不是从远程HTTP服务器获取HTML页面)。

要在目录中查找所有HTML文件,您需要使用glob模块。

示例:

from bs4 import BeautifulSoup
from glob import glob

# returns list of all .html files in directory.
htmlFilesList = glob('./*.html') 

for i, htmlFile in enumerate(htmlFilesList):
    saved_html = open(htmlFile, 'r', encoding="utf-8")
    soup = BeautifulSoup(saved_html, 'html.parser')

    # Close opened file
    saved_html.close()