首页 > 解决方案 > 从 Web 目录而不是单个 url 读取

问题描述

我有一个 python 脚本,用于在 Beautiful Soup 的帮助下从 url 解析 html 元素。

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

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

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

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 文件上单独运行我的当前脚本一样。

标签: pythonbeautifulsoupurllib

解决方案


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

要查找目录中的所有 HTML 文件,您需要使用globmodule.

例子:

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

推荐阅读