设为首页收藏本站

Crossin的编程教室

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

求助:74课报错:urllib.error.HTTPError: HTTP Error 404: Not Found

[复制链接]

9

主题

0

好友

75

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2018-4-10 16:58:08 |只看该作者 |倒序浏览
import urllib.request,time

time_start=time.time()
data=[]
for i in range(30):
    print('reuest movie:',i)
    id=1764796+i
    url='https://api.douban.com/v2/movie/subject/%d'%id
    d=urllib.request.urlopen(url).read()
    data.append(d)
    print(i,time.time()-time_start)
print('data',len(data))


运行结果如下:
reuest movie: 0
0 0.7348060607910156
reuest movie: 1
Traceback (most recent call last):
  File "D:/Learning_Software/Python/Documents/CrossinLesson/lesson52_Multithrending.py", line 9, in <module>
    d=urllib.request.urlopen(url).read()
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "D:\Learning_Software\Python\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found


好像能找到第一部,剩余的就找不到了,请问 是怎么回事




回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2018-4-10 17:28:20 |只看该作者
把请求地址print出来,然后在浏览器里看下,有些影片是被屏蔽了,这种要用异常处理去跳过它
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

9

主题

0

好友

75

积分

注册会员

Rank: 2

板凳
发表于 2018-4-10 19:20:09 |只看该作者
crossin先生 发表于 2018-4-10 17:28
把请求地址print出来,然后在浏览器里看下,有些影片是被屏蔽了,这种要用异常处理去跳过它 ...

经过异常处理已解决,谢谢。
但下面这个多线程的程序不能正确运行,麻烦再帮我看一下
import urllib.request, time, threading

def get_content(i):
    id=1764796+i
    try:
        url='https://api.douban.com/v2/movie/subject/%d'%id
        d=urllib.request.urlopen(url).read()
        data.append(d)
        print(i,time.time()-time_start)
    except:
        print('Not Found')
    print('data',len(data))

time_start = time.time()
data = []
for i in range(30):
    print ('request movie:', i)
    threading._start_new_thread(get_content, (i,))

input('press ENTER to exit...\n')
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2018-4-11 11:56:26 |只看该作者
Ambition——xb 发表于 2018-4-10 19:20
经过异常处理已解决,谢谢。
但下面这个多线程的程序不能正确运行,麻烦再帮我看一下
import urllib.requ ...

怎么个不正常法?
如果是没输出,你先把input去掉看,或者把print改为写文件
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

5#
发表于 2018-5-28 11:53:42 |只看该作者
crossin先生 发表于 2018-4-11 11:56
怎么个不正常法?
如果是没输出,你先把input去掉看,或者把print改为写文件 ...

import urllib.request,time,_thread

def get_content(i):
    id=1764796+1
    try:
        url='https://api.douban.com/v2/movie/subject/%d' % id
        d=urllib.request.urlopen(url).read()
        data.append(d)
        print(i,time.time()-time_start)
    except:
        print('Not Found!')
    print('data:',len(data))

time_start=time.time()
data=[]
for i in range(30):
    print('request movie:',i)
    _thread.start_new_thread(get_content,(i,))

input('press ENTER to exit...\n')

我按照这位同学的写了写,然后发现错误如下:

Traceback (most recent call last):
  File "C:/Users/boding/Desktop/Python/lesson74.py", line 18, in <module>
    _thread._start_new_thread(get_content,(i,))
AttributeError: 'module' object has no attribute '_start_new_thread'


所以说是参数格式不对吗?
回复

使用道具 举报

1

主题

0

好友

35

积分

新手上路

Rank: 1

6#
发表于 2018-5-28 21:12:58 |只看该作者
宝丁 发表于 2018-5-28 11:53
import urllib.request,time,_thread

def get_content(i):

我把_thread改成了threading就可以运行了~~~你可以试试,我也不知道为什么。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2018-5-29 00:53:40 |只看该作者
koalaoycx 发表于 2018-5-28 21:12
我把_thread改成了threading就可以运行了~~~你可以试试,我也不知道为什么。

似乎是版本问题
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

44

积分

新手上路

Rank: 1

8#
发表于 2018-8-24 02:49:15 |只看该作者
crossin先生 发表于 2018-4-10 17:28
把请求地址print出来,然后在浏览器里看下,有些影片是被屏蔽了,这种要用异常处理去跳过它 ...

老师,我在 2.7 版本直接复制了您的代码就能直接运行,在遇到有缺失的条目时内容是一个{Not Found}条目。但我在 3.X 版本时遇到缺失的条目就报这种错误,加了异常处理后可以正常运行。请问产生的原因时因为 2 到 3 版本的原因吗?还是我写的有问题 2.7 可以跳过 3.X 就报错了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2018-8-25 00:06:50 |只看该作者
BLACKADDER 发表于 2018-8-24 02:49
老师,我在 2.7 版本直接复制了您的代码就能直接运行,在遇到有缺失的条目时内容是一个{Not Found}条目。 ...

你把url输出来看看,如果一样的,那就是版本的差异
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-12-4 16:10 , Processed in 0.020377 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部