python爬虫,遇到403 forbidden,求助。

 # -*- coding: utf-8 -*-
import re
import sys
import requests
reload(sys)
sys.setdefaultencoding("utf-8")

if __name__ == '__main__':
    url = 'https://movie.douban.com/subject/1433330/photos?type=W'
    # 获取网页源码
    html = requests.get(url)

    # 抓每个图片链接
    pic_url = re.findall('<img src="https://(.*?)" />', html.text, re.S)  #此链接为预览链接
    i = 0
    for each in pic_url:
        raw = re.sub('thumb','raw',each,re.S)    //将预览链接中的thumb替换成raw,便成了高清图片链接
        print 'now download..'+'https://'+raw
        pic = requests.get('https://'+raw)
        f = open('hp\\'+str(i)+'.jpg','wb')
        f.write(pic.content)
        f.close()
        i += 1

刚开始学爬虫,爬豆瓣电影的壁纸练手。现在程序可以跑下来,不返回错,但是下载的图片是失败的,response 返回 403 forbidden。

我这样想问题的原因对吗?

因为我想下高清的,但是豆瓣查看高清壁纸前,需要登录,但我的程序是没有登录的,所以出现403是吗?所以我得模拟登陆是吗?

刚注册,木有悬赏币。。谢谢

403就是告诉你没有权限,这个服务器做了判断,需要对用户身份做验证,一般会通过cookie等,所以你没有登陆就没办法访问。

你可以使用代理ip,可以使用神箭手云爬虫,自带ip代理的爬虫。

alert(1)

在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制。
403应该是因为ip频次受控,可以用一下IPIDEA,ip池量大包含地区广爬虫业务完全可以实现而且能提高工作效率。

之前做过很多爬虫处理,其实你要懂,不是每个网站都那么好爬虫的。

对方:例如豆瓣为了防止访问量过大,服务器压力的承受,所以就啪啪啪整个403给你(服务器理解客户的请求,但拒绝处理它)。

他给你返回403,就是告诉你一种状态,根据他告诉你的态度,你作为男朋友的是不是应该改改自己的脾气。例如,对方发现你没有加header,对方发现你Cookies不对,或者是发现你的访问速度过快,所以就直接block你了。

很多这样衍生的问题,作为一个聪明的Crawler,你应该知道怎么爬对方的东西,才让对方服务器把你判断为人,而不是爬虫程序。

总之一句,根据反馈的错误信息,去思考应该怎么处理问题。这里没有给出详细的答案,但是你可以尝试着去理解豆瓣的block机制。