Python3-使用urllib运行.jsp脚本并检索结果
每次我在Tomcat服务器上运行.jsp文件时,都会创建一个csv文件。手动完成后,我点击一个链接“servers.jsp”,一个文件“server\u list.csv”开始下载 我希望在PythonV3脚本中执行此操作,这样我就可以迭代结果并自动化过程 下面是我的代码,用于向服务器发送帖子,在url中传递auth值并接收生成的.csvPython3-使用urllib运行.jsp脚本并检索结果,python,http,python-3.x,post,urllib,Python,Http,Python 3.x,Post,Urllib,每次我在Tomcat服务器上运行.jsp文件时,都会创建一个csv文件。手动完成后,我点击一个链接“servers.jsp”,一个文件“server\u list.csv”开始下载 我希望在PythonV3脚本中执行此操作,这样我就可以迭代结果并自动化过程 下面是我的代码,用于向服务器发送帖子,在url中传递auth值并接收生成的.csv import urllib.request link = "https://tomcat.server.org:8443/html/scripts/serv
import urllib.request
link = "https://tomcat.server.org:8443/html/scripts/servers.jsp"
userpass = {'pass': '12345', 'user': 'admin'}
data = urllib.parse.urlencode(userpass)
data = data.encode('utf-8')
req = urllib.request.Request(link, data)
resp = urllib.request.urlopen(req)
respData = resp.read()
saveFile = open(Myfile.csv,'w')
saveFile.write(str(respData))
saveFile.close()
- 确实创建了一个文件,但它不是完整的文件,而是文件应该包含的第一行(或部分)。为什么不下载整个文件
- 如何将
的值打印为字符串urllib.request.urlopen(req)
注意:我不能使用任何不是Python 3默认发行版附带的模块。首先,您必须检查响应代码
resp.code
。如果是200,您可以通过调用resp.readall
来获取内容,该函数一直读取到EOF并返回字节
它resp.getheader('Content-type')
是一种文本,您可以使用print(str(resp.readall())
显示。如果内容类型
是非文本,则必须将其存储到文件中。由于内容是字节
,因此必须以二进制模式存储在文件打开
中
respData = resp.readall()
with open(Myfile.csv,'wb') as saveFile:
saveFile.write(respData)
您是否尝试过改为
urllib.request.urlretrieve
注意:如果URL指向本地文件,或者存在该对象的有效缓存副本,则不会复制该对象
另一方面,请看一下请求
包,它是围绕urllib
构建的一个很好的包装器。我发现它更易于使用
问题表明他不想使用外部软件包。(
请求
)我的错。没有注意到。