问题:图片链接在浏览器打开没问题,但是在代码里面就是下载不了数据,提示403错误
可能原因:
原因一:抓取的网站有反爬虫机制,需要设置User-Agent,Referer,Cookie,时间间隔之类的,网上大部分文章也是这样说。
原因二:headers设置问题,这也是我遇到的问题,重点来了,原来ImagePipeline的headers是用settings里面的DEFAULT_REQUEST_HEADERS默认值为基础再叠加上自己设置的headers,也就是说你不止在下载图片的pipeline里面设置好了headers就行,你还要考虑到DEFAULT_REQUEST_HEADERS里面的设置,试了大半天才知道原因,一般DEFAULT_REQUEST_HEADERS里面只放User-Agent,然后在调用的时候根据需要去修改headers。
用来抓取douban练习的:https://movie.douban.com/top250
关键代码如下:
settings.py
注意图片下载路径只能用IMAGES_STORE,不能自己定义,不然图片下载对应的pipeline不会被激活,然后也下载不了图片。
IMAGES_EXPIRES = 30 # 30天内不重复抓取
import os
DEFAULT_REQUEST_HEADERS = {
'User-Agent': '