问题:图片链接在浏览器打开没问题,但是在代码里面就是下载不了数据,提示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': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36'
}
IMAGES_STORE = os.getcwd() + '\\picture\\'
IMAGES_EXPIRES = 3

在使用Scrapy爬取网站图片时遇到403错误,可能原因是网站反爬策略或headers设置不当。解决方案包括设置User-Agent、Referer、Cookie等,以及正确处理DEFAULT_REQUEST_HEADERS与自定义headers的关系。通过调整settings.py和pipelines.py中相关配置,成功解决douban电影Top250图片下载问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



