鱼C论坛

 找回密码
 立即注册
查看: 1502|回复: 7

[已解决]爬虫代码报错

[复制链接]
发表于 2020-3-18 14:41:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个例子就是小甲鱼第54课上讲的例子,我敲了同样的代码但是报错了,请大神帮忙看看为啥报错
这是运行的代码:
import urllib.request

re=urllib.request.Request('http://plackitten.com/g/500/600')
response=urllib.request.urlopen(re)
cat_img=response.read()

with open('cat_500_600.jpg','wb')as f:
    f.write(cat_img)
这是报错的提示:
Traceback (most recent call last):
  File "C:\Program Files\Python\lib\urllib\request.py", line 1319, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "C:\Program Files\Python\lib\http\client.py", line 1230, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1276, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1225, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1004, in _send_output
    self.send(msg)
  File "C:\Program Files\Python\lib\http\client.py", line 944, in send
    self.connect()
  File "C:\Program Files\Python\lib\http\client.py", line 915, in connect
    self.sock = self._create_connection(
  File "C:\Program Files\Python\lib\socket.py", line 787, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\Program Files\Python\lib\socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\houlin\Desktop\1.py", line 4, in <module>
    response=urllib.request.urlopen(re)
  File "C:\Program Files\Python\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
  File "C:\Program Files\Python\lib\urllib\request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "C:\Program Files\Python\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python\lib\urllib\request.py", line 1348, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Program Files\Python\lib\urllib\request.py", line 1322, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>
最佳答案
2020-3-18 15:27:36
import urllib.request
import easygui

while 1:
        try:
                z = easygui.multenterbox('请输入猫的尺寸','下载一只喵',['长','宽'])
                x = z[0]
                y = z[1]

                response = urllib.request.urlopen('http://placekitten.com/%s/%s' % (x,y))     #爬取猫的图片
                cat_img = response.read()       #读取猫的图片

                path = easygui.diropenbox('请选择存喵的文件夹')

                with open(path + '\\cat_%s_%s.jpg' % (x,y),'wb') as f:         #打开一个新的文件
                        f.write(cat_img)           #写入猫的图片

                choose  = easygui.buttonbox('下载成功!','下载一只喵',['继续下载','退出'])
                if choose == '退出':
                        break

        except :
                easygui.msgbox('抱歉!系统正忙!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-18 15:18:16 | 显示全部楼层
本帖最后由 xinhua202002 于 2020-3-18 15:19 编辑

将链接由单引号改为双引号
试一试
或者换个网址来爬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 15:21:21 | 显示全部楼层
你确定这个网址可以访问吗
我的360访问不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 15:24:45 | 显示全部楼层
xinhua202002 发表于 2020-3-18 15:21
你确定这个网址可以访问吗
我的360访问不到

嗯呢,这个网站是可以访问的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 15:27:36 | 显示全部楼层    本楼为最佳答案   
import urllib.request
import easygui

while 1:
        try:
                z = easygui.multenterbox('请输入猫的尺寸','下载一只喵',['长','宽'])
                x = z[0]
                y = z[1]

                response = urllib.request.urlopen('http://placekitten.com/%s/%s' % (x,y))     #爬取猫的图片
                cat_img = response.read()       #读取猫的图片

                path = easygui.diropenbox('请选择存喵的文件夹')

                with open(path + '\\cat_%s_%s.jpg' % (x,y),'wb') as f:         #打开一个新的文件
                        f.write(cat_img)           #写入猫的图片

                choose  = easygui.buttonbox('下载成功!','下载一只喵',['继续下载','退出'])
                if choose == '退出':
                        break

        except :
                easygui.msgbox('抱歉!系统正忙!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 15:33:16 | 显示全部楼层

运行成功了,非常感谢大神,还是想请问一下为什么我虽然没用easygui但是爬取网站的代码跟你写的是一样的,为什么就会报错呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 15:39:07 | 显示全部楼层
import urllib.request

response=urllib.request.urlopen('http://plackitten.com/500/600')
cat_img=response.read()

with open('D:\\cat_500_600.jpg','wb')as f:
    f.write(cat_img)
比如我写成这样,运行就还是会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 15:39:35 | 显示全部楼层
小猴猴 发表于 2020-3-18 15:33
运行成功了,非常感谢大神,还是想请问一下为什么我虽然没用easygui但是爬取网站的代码跟你写的是一样的 ...

你再试一下原来的代码
看看是不是网络问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表