设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

Python 实战(5):拿来主义

[复制链接]

0

主题

0

好友

50

积分

注册会员

Rank: 2

38#
发表于 2017-3-15 01:05:28 |只看该作者
prigioni 发表于 2017-2-19 17:14
我是到第22个也出现这个错误

试了一下终于解决了只能拉到22个的问题,原因在于Top250拉到的列表里有个id有问题
使用Try……else即可解决
在下面这个语句里加上Try else,如下,这也提了个醒,以后要养成好习惯,请求网址的时候要养成习惯使用try else语句,防止由于网址打不开后面的逻辑都走不通
count=0
for mid in movie_ids:
    print(count,mid)
    try:
        response=request.urlopen('http://api.douban.com/v2/movie/subject/%s'%mid)
        data=response.read().decode('utf-8')
        add_movie(data)
        count+=1
        time.sleep(3)
    except:
        print('id is not found')
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

37#
发表于 2017-2-20 20:59:23 |只看该作者
prigioni 发表于 2017-2-19 17:14
我是到第22个也出现这个错误

有时是爬太快被暂时封掉,有时是请求卡住了。也可能遇到某部电影的信息不开放
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

36#
发表于 2017-2-19 17:14:16 |只看该作者
spritezhong 发表于 2016-3-18 21:49
输出的id信息不对咋办

我是到第22个也出现这个错误
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

35#
发表于 2017-2-5 00:09:16 |只看该作者
shmxz1989 发表于 2017-2-4 18:57
在插入数据的过程中,看提示到了59条的时候就没动静了,也没报错,不知道啥原因
但在之前输出的movie_id中 ...

试试看每次抓取sleep停顿一下,有时太快就会被封
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

82

积分

注册会员

Rank: 2

34#
发表于 2017-2-4 18:57:54 |只看该作者
本帖最后由 shmxz1989 于 2017-2-4 20:19 编辑

在插入数据的过程中,看提示到了59条的时候就没动静了,也没报错,不知道啥原因
但在之前输出的movie_id中,后面还有好多条数据的。

补更:我把电脑重启了一下,再跑,正常了......

只是最后数据还是没获取齐全,一百来条之后,豆瓣就小气的掐掉了数据,看提示是次数超限了......
但是程序确实是正常的走完了。



回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

33#
发表于 2016-11-1 16:57:02 |只看该作者
winmount 发表于 2016-10-31 23:29
请问老师http://api.douban.com/v2/movie/top250为什么在我的chrome上显示成这样

对的啊,这个接口返回的就是 json 格式的数据。我那个是因为装了调整 json 显示的插件
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

32#
发表于 2016-10-31 23:29:34 |只看该作者
请问老师http://api.douban.com/v2/movie/top250为什么在我的chrome上显示成这样

捕获2.PNG (94.2 KB, 下载次数: 350)

捕获2.PNG

回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

31#
发表于 2016-9-30 23:36:21 |只看该作者
qiaoyulong9999 发表于 2016-9-30 08:59
先生,麻烦问一个问题
像前边有位同学说的有几部电影的ID是找不到的,我用了try except语句来处理这种异常
...

1. try catch加的位置不对吧,如果没有找到id,程序之间在抓取的时候就报错了。之所以从头抓,是因为你又刷新或请求了页面吧。所以你应该在会报错的地方加try
2. 在insert之前,你可以查一下这个id的电影是否已经存在,避免重复添加。这样即使中途出错,下次重新运行也不会影响
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

40

积分

新手上路

Rank: 1

30#
发表于 2016-9-30 08:59:19 |只看该作者
先生,麻烦问一个问题
像前边有位同学说的有几部电影的ID是找不到的,我用了try except语句来处理这种异常
def add_movie(data):
    # print data
    movie = json.loads(data)
    # print movie
    try:
       db.insert('movie',
          id=int(movie['id']),
          title=movie['title'],
          origin=movie['original_title'],
          url=movie['alt'],
          rating=movie['rating']['average'],
          image=movie['images']['large'],
          directors=','.join([d['name'] for d in movie['directors']]),
          casts=','.join([c['name'] for c in movie['casts']]),
          year=movie['year'],
          genres=','.join(movie['genres']),
          countries=','.join(movie['countries']),
          summary=movie['summary'],
       )
       print movie['title']
    except:
       print 'ID is not found'

但是这样出现了一个问题,每次搜索到那个ID找不到的电影的,程序就会从第一部电影开始搜索,这样导致table movie的数据库有很多重复的电影
应该怎么解决,其实应该是在
下边的:
count = 0
for mid in movie_ids:
    # print count, mid
    response = urllib.urlopen('http://api.douban.com/v2/movie/subject/%s' % mid)
    data = response.read()
    add_movie(data)
    count += 1
    time.sleep(3)
加入某些语句,就是遇到ID找不到的电影,直接跳过,开始接下来的搜索,而不是重新开始,但是具体要添加什么语句,望指教,多谢了
回复

使用道具 举报

0

主题

0

好友

62

积分

注册会员

Rank: 2

29#
发表于 2016-8-3 11:14:00 |只看该作者
crossin先生 发表于 2016-8-3 09:54
404这是网页请求失败,没找到对应页面的报错。
你把问题分解开来,去调试定位,把每部分的中间数据输出出 ...

已经找到问题,是取到的ip,第21个没有内容,直接访问也没有内容,找不到,我加了个异常处理,就没问题的,最终取到了249个数据,谢谢老师
回复

使用道具 举报

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

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

GMT+8, 2024-5-18 12:06 , Processed in 0.038549 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部