【问题标题】:Urllib2 Python Error [closed]Urllib2 Python错误[关闭]
【发布时间】:2012-12-16 10:49:52
【问题描述】:

我一直在使用 Python 和 Urllib2 编写网站列表的 Robots.txt 下载器。以下是代码

    import MySQLdb
    import urllib
    import urllib2
    clone=0
    db = MySQLdb.connect("127.0.0.1","root","","research" )
    cursor = db.cursor()
    sql = "SELECT * FROM sites"
    try:
     cursor.execute(sql)
         # Fetch all the rows in a list of lists.
     results = cursor.fetchall()
     for row in results:
     id = row[0]
     website = row[1]
     website=website+"robots.txt"
     print website
     try:
        check = urllib2.urlopen(website,timeout=10).code
        if not check: 
            print "No WEBSERVER FOUND"
            clone=1
     except IOError:
        clone=1
        print "No Webserver Found"
     if(check==200 or clone==0):
        sql2 = "UPDATE sites SET robots_txt_available=1 WHERE ID=%s" % \
            (id)
                    cursor.execute(sql)
        print website," Has Robots.txt.";
    else:print website," does not Have robots.txt."
    except:
            print "Error: unable to fecth data"

            # disconnect from server
    db.close()

代码的输出是:

 http://rashtrapatisachivalaya.gov.in/robots.txt
 No Webserver Found
 Error: unable to fecth data

所以它没有完全执行。谁能告诉我这段代码有什么问题。

【问题讨论】:

  • 不知何故,我期待 MixedCase 变量名...

标签: python mysql urllib2


【解决方案1】:

你的观点是什么?给定的 URL 不存在,因此正在执行 except 子句中的代码。而且'code'属性访问只有在没有异常的情况下才会执行……

正确的解决办法是

import urllib2
try:
   urllib2.urlopen("some url")
except urllib2.HTTPError, err:
   if err.code == 404:
       <whatever>
   else:
       raise

【讨论】:

  • 是的,这就是我想要做的。如果一个网站未出现,则其余代码不会执行(即其余网站)。
  • 请问什么?问一个连贯的问题...
猜你喜欢
  • 2015-02-05
  • 1970-01-01
  • 2015-03-04
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多