python - 如何用机械化捕捉超时
问题描述
我有一个带有 mechanize 的 pythonscript,可以从文本文件中读取 url 列表。大约有 6000 个网址。当它达到 3000 左右时,脚本会挂起。当我看到脚本使用 0% 的处理能力时,我注意到了这一点。
所以,我使用 python-dbg 来检查发生了什么。我发现在某个网址上,它卡住了。我尝试在 url 获取行中添加超时,但它不起作用。
那么有什么办法,如果加载需要这么多时间,我可以添加超时并继续下一个 url?
from json import loads
import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [("User-agent","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13")]
with open('mf.txt') as f:
for line in f:
try:
google_results = br.open("https://www.abcd.com" + str(line), timeout=0).read()
json_obj = loads(google_results)
if json_obj["ruleGroups"]["USABILITY"]["pass"] == True:
print str(line), "Good"
else:
print str(line), "Bad"
except Exception as e:
解决方案
只需加上br.set_handle_refresh(False)
这个timeout=0
推荐阅读
- html - 想要有不同的边框底部尺寸和背景尺寸
- android - Android 通知:应用程序名称旁边的字符串,使用 setCustomContentView
- arrays - 如何将二维数组传递给过程,并在函数内部对其进行修改?VBA
- javascript - 我应该如何在我的 JS 中添加这个函数
- arrays - 一维 std::string 数组在技术上是矩阵吗?
- javascript - Validate2 函数无法提取表单输入
- mysql - MySql 无法从局域网连接
- python - 返回 lambda 的函数的类型注释
- c++ - 输入 C++ 中的错误
- html - 将 div 放在另一个具有响应式设计的 div 下