Python Mechanize IncompleteRead错误

时间:2011-12-24 21:15:48

标签: python apache mechanize bing

我正在尝试机械化并重新找到与零售商店列表相对应的网站。

我一直在解析Bing搜索结果以获取最高结果的网址。不幸的是,似乎独立于查询,随机时间我一直在收到httplib.IncompleteRead错误。即使我有一个随后的解决方法,我想了解发生了什么。

def bingSearch(query): #query is the store's name, i.e. "Bob's Pet Shop"
     while True:
         try:
             bingBrowser.open('http://www.bing.com/search?q="' + query.replace(' ','+') + '"' )
             htmlCode = bingBrowser.response().read()
             break
         except httplib.IncompleteRead:
             #Sleep for a little while and try again.

其他相关信息:

  • 有时,对于单个bing url,程序将尝试在没有IncompleteRead错误的成功读取之前多次打开并读取该URL。
  • bingBrowser的headers属性设置为看起来不错。
  • bingBrowser的robots属性设置为false。
  • httplib: incomplete read ...我对Apache一无所知,所以我无法理解问题的答案,但它可能对您有所帮助。也就是说,我怀疑我遇到了类似的问题(为什么bing.com会遭遇Apache错误?!)

编辑:

  1. 根据JF Sebastian的建议,用urllib.urlencode(dict(q = query))替换query.replace('','+')+'“') - 没有变化(我知道这不是一个解决方案) )。
  2. 在bingBrowser.open('http://www.bing.com/search?q=“'+ query.replace('','+')+'”'
  3. 上遭受了一个莫名其妙的urllib2.URLError。
  4. 得到xlwt相关的“超过65535个字符的字符串”错误 - 可能不相关。
  5. 提前致谢。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。关键是你没有捕获连接到Bing时可能出现的所有异常。

您可以找到解决方案here。它适用于我的情况。