python删除远程服务器文件_python3.6.3 urlopen从存储在远程服务器上的html文件的URI中删除服务器名...

在Python中尝试使用urlopen解析和读取通过UNC路径访问的远程HTML文件时遇到问题。尽管URI可以在浏览器中打开,但urlopen似乎忽略了服务器名称导致读取失败。代码示例显示了如何将UNC路径转换为URI,但遇到了因文件 URI 方案仅适用于本地主机的限制。寻求解决方案,以避免依赖驱动器映射来访问远程文件。
摘要由CSDN通过智能技术生成

我需要解析成百上千的HTML文件,这些文件都是在服务器上存档的。这些文件是通过UNC访问的,然后我使用pathlib的as_uri()方法将UNC路径转换为as uri。在

完整的UNC路径,例如:\\dmsupportfs\~images\sandbox\测试.html在from urllib.request import urlopen

from bs4 import BeautifulSoup

import os, pathlib

source_path = os.path.normpath('//dmsupportfs/~images/sandbox/') + os.sep

filename = 'test.html'

full_path = source_path + filename

url = pathlib.Path(full_path).as_uri()

print('URL -> ' + url)

url_html = urlopen(url).read()

所以我传递给urlopen的URI(L)是:文件://dmsupportfs/%7Eimages/sandbox/test.html在

我可以将其插入任何web浏览器并返回页面,但是,当urlopen读取页面时,它忽略/删除URI中的服务器名称(dmsupportfs),因此读取失败,无法找到文件。我假设这与urlopen方法如何处理URI有关,但我现在有点困惑(很可能是快速而容易解决的问题……抱歉,对Python来说有点陌生)。如果我将UNC位置映射到一个驱动器号,然后使用映射的驱动器号而不是UNC路径,那么这个方法不会有任何问题。不过,我不想依赖映射驱动器来完成这项任务。有什么建议吗?在

下面是显示错误的上述代码的输出:

^{pr2}$

更新:所以,通过上面的回溯和实际的方法,我发现了这个,这实际上告诉我,我试图用file://URI做什么对远程服务器是行不通的。在def file_open(self, req):

url = req.selector

if url[:2] == '//' and url[2:3] != '/' and (req.host and

req.host != 'localhost'):

if not req.host in self.get_names():

raise URLError("file:// scheme is supported only on localhost")

有什么想法可以让它在不映射驱动器的情况下工作吗?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值