python - 为什么在python中请求停止一段时间后?
问题描述
我有这个代码,它的功能是发送一个Jetta类型的请求,从请求中带上文本,从文本文件中读取网站链接,问题是发送300或500个请求后,脚本停止而不显示任何错误,它只是停止工作?
import requests
sites = open(r'site.txt', 'r', encoding="utf8").readlines()
l_site = []
for i in sites:
l_site.append(i)
for x in len(l_site):
result = requests.get(f'{site}', allow_redirects=True).text
open('result.txt', 'a').write(f'{result}\n')
解决方案
如果我理解正确,这就是你想要的:
- 读自
site.txt
- 如果 http 请求成功,则将响应负载附加到
result.txt
- 如果 http 请求由于超时而失败,例如,将结果与 url 附加到另一个文件
这是一段运行的代码。请注意,如果您想捕获更多类型的错误,您可以更改except
部分。
import requests
URLS_FILE = 'site.txt'
RESULT_FILE = 'result.txt'
ERRORS_FILE = 'result-error.txt'
def handle_url(url: str, result_file, error_file):
try:
# 10 seconds timeout, not download time, but time to get an HTTP response
content = requests.get(url, allow_redirects=True, timeout=10)
result_file.write(f'{content.text}\n')
except requests.exceptions.ConnectTimeout as e:
error_file.write(f'{url}: {e}\n')
with open(URLS_FILE, 'r', encoding="utf8") as f:
with open(RESULT_FILE, 'a') as rf:
with open(ERRORS_FILE, 'a') as ef:
for url in f.readlines():
handle_url(url, rf, ef)
推荐阅读
- word2vec - 不同语法的word2vec
- javascript - 带参数的内部端点调用
- ms-access - 对两个表执行反 INNER JOIN
- sas - 仅保留与 sas 中的要求匹配的连续行,例如
- python - python2.7.12 不包含 numpy 也不包含 pip 所以我无法在 gromacs 中运行我的程序
- c++ - 如何打印调用函数的行号和文件名而不是 log.cpp?
- python - 下游类中不可访问的对象初始化属性
- python - 从脚本中更改目录后如何返回脚本目录?
- c# - 问题多实例代理wcf服务c#
- javascript - React Table:_pivotVal 将对象转换为字符串“[Object Object]”