鱼C论坛

 找回密码
 立即注册
查看: 2940|回复: 6

新手爬虫求助urllib.request.urlretrieve(each,filename,None)报错

[复制链接]
发表于 2019-6-11 15:49:14 | 显示全部楼层 |阅读模式

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

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

x
已经知道filename中已经取好了url地址:
filename=each.split("/")[-1]
        print(filename)
但是执行下句无法报存本地,报错
urllib.request.urlretrieve(each,filename,None)

报错信息
Traceback (most recent call last):
  File "D:/pycharm/小甲鱼/2059正则1.py", line 23, in <module>
    get_img(open_url(url))
  File "D:/pycharm/小甲鱼/2059正则1.py", line 19, in get_img
    urllib.request.urlretrieve(each,filename,None)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python37\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Process finished with exit code 1


新手刚学爬虫,照猫画虎,不知什么问题,应该怎么解,求大神解惑!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-11 16:35:34 From FishC Mobile | 显示全部楼层
拿代码说话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-11 16:44:41 | 显示全部楼层
import re
import urllib.request
def open_url(url): #获取地址
    req=urllib.request.Request(url)
    req.add_header('User-Agent',' Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')
    page=urllib.request.urlopen(req)
    html=page.read().decode('utf-8')
    return html
def get_img(html):
    p=r'https://i.meizitu.net/thumbs/2019/06/18\d\d\d\d_\d\d.\d\d_236.jpg'
    imglist=re.findall(p,html)#还包含了很多没用信息

    for each in imglist:
        filename=each.split("/")[-1]#得到文件名
        urllib.request.urlretrieve(each,filename,None)

if __name__=='__main__':
    url='https://www.mzitu.com/'
    get_img(open_url(url))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-11 16:46:05 | 显示全部楼层
谢谢大神,代码在上面,辛苦了!@wp231957
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 16:56:57 From FishC Mobile | 显示全部楼层
小强森 发表于 2019-6-11 16:46
谢谢大神,代码在上面,辛苦了!@wp231957

妹子图网早都反爬了,小甲鱼的代码早就不能用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 17:03:10 | 显示全部楼层
这样说吧,你的请求头缺少了refer参数。
导致服务器认为你无权访问,所以报403错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-11 17:09:34 | 显示全部楼层
@wp231957@wongyusing 我看到我的所有的图片网址都已经报存到imglist里面了,是因为refer参数,或是反爬虫的原因吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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