请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

Python 实战(5):拿来主义

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 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

好友

14

积分

新手上路

Rank: 1

发表于 2016-10-31 23:29:34 |显示全部楼层
请问老师http://api.douban.com/v2/movie/top250为什么在我的chrome上显示成这样
捕获2.PNG
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 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

好友

82

积分

注册会员

Rank: 2

发表于 2017-2-4 18:57:54 |显示全部楼层
本帖最后由 shmxz1989 于 2017-2-4 20:19 编辑

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

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

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



回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

发表于 2017-2-19 17:14:16 |显示全部楼层
spritezhong 发表于 2016-3-18 21:49
输出的id信息不对咋办

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

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-2-20 20:59:23 |显示全部楼层
prigioni 发表于 2017-2-19 17:14
我是到第22个也出现这个错误

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

使用道具 举报

0

主题

0

好友

50

积分

注册会员

Rank: 2

发表于 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')
回复

使用道具 举报

0

主题

0

好友

50

积分

注册会员

Rank: 2

发表于 2017-3-15 01:29:18 |显示全部楼层
我的ip被豆瓣封掉了,咋办,大概30多个的时候不行了
企业微信截图_20170315012808.png

企业微信截图_20170315012944.png



回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-3-15 17:09:38 |显示全部楼层
nekonekobox 发表于 2017-3-15 01:29
我的ip被豆瓣封掉了,咋办,大概30多个的时候不行了

请求太快了吧。过一阵子应该会解封,之后再抓记得每次停一会儿
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-3-29 17:59 , Processed in 0.019056 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部