Python Mechanize:HTTP错误428前置条件失败

时间:2016-02-01 17:08:00

标签: python mechanize

我正在尝试使用python mechanize模块在网站上自动化一个进程。

使用以下代码,我会刷新网站,直到找到我想要关注的链接:

            for link in br.links():            
               valuable = filter(lambda tpl: tpl[0]=='href', link.attrs)
               if len(valuable) == 0:
                   continue
               if 'book.php' in valuable[0][1]:
                   print link
                   req = br.follow_link(link)
                   file_handler = open("level2.html", "w")
                   file_handler.write(br.response().read())
                   file_handler.close()
                   not_done = False
                   break

一旦我找到包含" book.php"的链接,应用程序就崩溃了,我收到以下错误:

  

文件" /home/max/Dokumente/dev/main.py",第43行,在运行中       req = br.follow_link(link)

     

文件" build / bdist.linux-x86_64 / egg / mechanize / _mechanize.py",第569行,在follow_link中

     

文件" build / bdist.linux-x86_64 / egg / mechanize / _mechanize.py",第203行,打开

     

文件" build / bdist.linux-x86_64 / egg / mechanize / _mechanize.py",第255行,_mech_open

     

mechanize._response.httperror_seek_wrapper:HTTP错误428:前提条件失败

这是什么意思?我无法弄明白。如何解决此错误?

1 个答案:

答案 0 :(得分:0)

正如here所说:

  

原始服务器要求请求是有条件的。它的典型用途是避免“丢失更新”问题,其中客户端获取资源的状态,修改它,然后将其返回到服务器,同时第三方修改了服务器上的状态,导致冲突。

这可能意味着处理过的链接中的GET参数突然过时了。