这是我设计的一个小窗口小部件,旨在“浏览”同时绕过代理设置。我在Code Review上被告知这将是有益的,但我很难将其纳入我的程序的当前逻辑。这是代码:
import urllib.request
import webbrowser
import os
import tempfile
location = os.path.dirname(os.path.abspath(__file__))
proxy_handler = urllib.request.ProxyHandler(proxies=None)
opener = urllib.request.build_opener(proxy_handler)
def navigate(query):
response = opener.open(query)
html = response.read()
return html
def parse(data):
start = str(data)[2:-1]
lines = start.split('\\n')
return lines
while True:
url = input("Path: ")
raw_data = navigate(url)
content = parse(raw_data)
with open('cache.html', 'w') as f:
f.writelines(content)
webbrowser.open_new_tab(os.path.join(location, 'cache.html'))
希望之前使用过这些模块的人可以帮助我。我想使用tempfile的原因是我的程序获得原始html,解析它并将其存储在 文件 中。每次输入新输入时都会覆盖此文件,理想情况下,当程序停止运行时,该文件将被删除。此外,程序初始化时不必存在该文件,因此从该视图看起来也是合乎逻辑的。
答案 0 :(得分:1)
由于您要将文件名称传递给webbrowser.open_new_tab()
,因此您应使用NamedTemporaryFile
cache = tempfile.NamedTemporaryFile()
...
cache.seek(0)
cache.writelines(bytes(line, 'UTF-8') for line in content)
cache.seek(0)
webbrowser.open_new_tab('file://' + cache.name)