我正在编写一个脚本,该脚本以url,用户名和密码作为参数,发出Web请求并记录结果。我想使用一个包含许多站点/凭证的csv文件,并为每个条目循环请求,如果有任何异常/错误,我想跳到文件中的下一个条目,但是我的脚本在第一次运行后挂起循环
目前,我只是通过命令行标志手动传递参数,但这是不可行的,因为手动操作会花费很多时间,当我尝试创建循环并从文件中提取参数时,我的函数运行了一次然后无限期地挂起,无论是否存在例外都将发生这种情况。
#currently Im using command line arguments to manually input the
#arguments for the function below, which works fine but I want to pull
#arguments from a list in a csv file (see comments at end for what ive #tried)
def webrequest(username,password):
url = site
headers = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
'Accept-Encoding' : 'none'
}
payload = {'log': username,
'pwd': password
}
session = requests.session
r = session.post(url, headers=headers, data=payload)
if r.status_code == 404
print "404"
#end function, move on to next line in csv
if r.status_code == 200
print r.text
# move on to next line in csv
#file = open(file, r)
#with open(file) as f:
# for line in f:
# args = line.split(",")
# webrequest(args[0],args[1],args[2])
我希望函数到达末尾时可以使用csv文件中的下一行重新开始,但是它没有..它只是挂在命令行上
答案 0 :(得分:0)
尝试使用timeout参数的session.post()。此处的详细信息:http://docs.python-requests.org/en/master/user/advanced/#timeouts
您的Web服务器很可能没有返回响应,因此您感到您的功能卡住了。