python - 从 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 文件上单独运行我的当前脚本一样。
解决方案
是的,您不再需要urllib
,因为您想解析目录中保存的 HTML 文件(而不是从远程 HTTP 服务器获取 HTML 页面)。
要查找目录中的所有 HTML 文件,您需要使用glob
module.
例子:
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()
推荐阅读
- python - “str”对象在调用函数绘制直方图时没有属性“hist”错误
- java - Java 在继承结构上实现接口 Cloneable
- java - 计算二进制间隙时无限循环
- php - 我无法根据用户输入的初始值计算增量值并将其显示在表格中
- python - Apscheduler get_jobs() 返回空列表
- python - 在 PySimpleGUI 中选择列表框的单行
- javascript - Node.js 关闭当前 Google Chrome 选项卡
- javascript - 在 cypress 测试运行程序中找不到文件
- java - 执行乘法运算的最高分数
- leaflet - 我可以通过单击使传单标记可拖动吗?