gpt4 book ai didi

python - 如何使用 python-mechanize 设置超时?

转载 作者:行者123 更新时间:2023-11-30 23:29:00 24 4
gpt4 key购买 nike

我正在使用python-mechanize抓取一些网站,这些网站有时根本不响应请求,并且这些请求保持打开时间太长,因此我需要限制这些请求的超时。

使用urlopen方法时,可以使用timeout参数设置超时,但我还没有找到使用高级API(例如)来设置超时的简单方法提交点击 方法。理想情况下,整个浏览器类的超时设置只设置一次,并且所有调用都会遵守这一点。

可以通过将自定义 request_class 传递给每个 clicksubmit 调用来自定义此功能,但这只会污染代码,所以我正在寻找更好的解决方案来为 mechanize 的浏览器类设置超时(不,我不想使用 socket.setdefaulttimeout 更改默认套接字超时)。

最佳答案

在 Python 社区中,这有点令人不悦,但您可以将所需的行为“隐藏”到浏览器类中。

基本上,您需要执行以下操作。创建一个执行您想要的操作的函数(使用自定义请求类)。

browser_click = Browser.click
def my_click(self, *args, **kwds):
browser_click(self, request_class=MyRequestClass, *args, **kwds)
Browser.click = my_click

如果这对您来说太 Ruby 了,您可以创建一个 Browser 子类来执行类似的操作。

class MyBrowser(Browser):
def click(self, *args, **kwds):
Browser.click(self, request_class=MyRequestClass, *args, **kwds)

我发现这更干净一些,但如果您无法控制浏览器实例的创建,它将不起作用。

关于python - 如何使用 python-mechanize 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21385445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com