设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10613|回复: 4
打印 上一主题 下一主题

关于 try except异常处理结束后继续执行的问题

[复制链接]

1

主题

0

好友

21

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-8-4 15:12:46 |只看该作者 |正序浏览
这部分是我通过豆瓣的api获取数据后经过处理插入数据库,功能能正常实现,但因为有些原因,所以top250的某些电影可能豆瓣没有数据,所以插入数据库会出错,于是我用了try except来处理,但当遇到异常之后,程序就会终止,我在excrpt部分最后增加了continue后这会有如下报错,该怎么解决
  File "E:\Work\PythonLearn1\hello\gettop250.py", line 34
    continue
SyntaxError: 'continue' not properly in loop

------------------------------------------部分代码-------------------------------------------------
#coding=utf-8
import urllib
import json
import time
import regular_msg
import sql_connect
#http://api.douban.com/v2/movie/1291843黑客帝国
#http://api.douban.com/v2/movie/1292052肖申克的救赎
#http://api.douban.com/v2/movie/top250
db = sql_connect.db_connect()#建立数据库连接
dbl = db.cursor()
count_1 = 0
def analysis(json_data,id1):
    author = json_data['author']#导演
    alt_title = json_data['alt_title'].encode('utf8')#中文名
    post_img = json_data['image'].encode('utf8')#海报
    title = json_data['title'].encode('utf8')#英文名
    summary = json_data['summary'].encode('utf8')#简介
    attrs = json_data['attrs']#艺术信息包含上映,语言,主演,编剧一类
    link = json_data['mobile_link'].encode('utf8')#豆瓣链接,手机版与pc版已经合并
    tags = json_data['tags']#电影标签
    author = regular_msg.author_handle(author)
    attrs = regular_msg.attrs_handle(attrs)
    tags = regular_msg.tags_handle(tags)
    id1 = id1.encode('utf8')
    sql = ('insert into movies_douban values("'+id1+'","'+author+'","'+alt_title+'","'+post_img+'","'+title+'","'+summary+'","'+attrs['language']+'","'+attrs['pubdate']+'","'+attrs['country']+'","'+attrs['writer']+'","'+attrs['director']+'","'+attrs['cast']+'","'+attrs['movie_duration']+'","'+attrs['year']+'","'+attrs['movie_type']+'","'+link+'","'+tags+'")')
    try:
        dbl.execute(sql)# 执行sql语句
        db.commit()# 提交到数据库执行
        print ('成功')
    except:
        db.rollback()# 如果错误就回滚
        print ('失败')
        continue
   
movie_ids = []
for index in range(0,250,50):
    response = urllib.urlopen('http://api.douban.com/v2/movie/top250?start=%d&count=50'%index)
    data = response.read()
    data_json = json.loads(data)
    movies250 = data_json['subjects']
    for movie in movies250:
        movie_ids.append(movie['id'])
        print movie['id'],movie['title']
    time.sleep(3)
print ('250id获取完成')

for mid in movie_ids:
    response = urllib.urlopen('http://api.douban.com/v2/movie/%s'%mid)
    data = response.read()
    data_json = json.loads(data)#数据整理并插入数据库
    analysis(data_json, mid)
    count_1 +=1
    time.sleep(1.5)
db.close()# 关闭数据库连接   
print ('查询了%d条'%count_1)
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2017-8-7 22:55:59 |只看该作者
super 发表于 2017-8-7 10:31
找到原因了,虽然不清楚豆瓣那里是什么限制规则,反正我每用接口发送一定数量的请求后,豆瓣就会封我的ip ...

豆瓣限制每分钟40次,官方文档开头有写
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

21

积分

新手上路

Rank: 1

地板
发表于 2017-8-7 10:31:01 |只看该作者
crossin先生 发表于 2017-8-4 23:36
continue只能用在循环里,你这样隔了一层函数是不行的。
遇到异常程序终止,要么是你的逻辑没做对,要么你 ...

找到原因了,虽然不清楚豆瓣那里是什么限制规则,反正我每用接口发送一定数量的请求后,豆瓣就会封我的ip,发生异常的那个请求返回的JOSN是能取到‘subjects’,但对应内部的数据的相应结构可能变了,或者干脆为空,,如果再发送一次请求就会有如下josn信息,得过半个小时后IP才会解封,还有谢谢先生的解答,由于周末休息,所以也没看代码和论坛,回复有点晚了
  1. msg        "rate_limit_exceeded2: 122.225.79.126"
  2. code        112
  3. request        "GET /v2/movie/1418834"
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2017-8-4 23:36:23 |只看该作者
continue只能用在循环里,你这样隔了一层函数是不行的。
遇到异常程序终止,要么是你的逻辑没做对,要么你在except里又触发了别的错误。这个要看你报错了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

21

积分

新手上路

Rank: 1

沙发
发表于 2017-8-4 15:25:27 |只看该作者
测试代码插入
  1. for mid in movie_ids:
  2.     response = urllib.urlopen('http://api.douban.com/v2/movie/%s'%mid)
  3.     data = response.read()
  4.     data_json = json.loads(data)#数据整理并插入数据库
  5.     analysis(data_json, mid)
  6.     count_1 +=1
  7.     time.sleep(1.5)
  8. db.close()# 关闭数据库连接   
  9. print ('查询了%d条'%count_1)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 03:49 , Processed in 0.016394 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部