利用Scrapy框架下載圖片報400狀態碼

問題:

利用Scrapy框架爬伯樂在線的時候,涉及到圖片下載,由於scrapy框架中內置有圖片下載功能,因此沒有另外寫,直接使用。在settings.py中作了以下修改:bash

ITEM_PIPELINES = {
    'Article.pipelines.ArticlePipeline': 300,
    "scrapy.pipelines.images.ImagesPipeline": 1
}

程序跑起來很OK,但沒有圖片下載下來,一檢查,發現存在這樣的警告:
[scrapy.pipelines.files] WARNING: File (code: 400): Error downloading file from <GET xxx> referred in <None>服務器

經排查,找到問題出如今請求頭的設置部分:框架

DEFAULT_REQUEST_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                  '(KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
    'Host': 'blog.jobbole.com'
}

解決方法:

Host字段刪除便可scrapy

反思:

我思考以後,認爲之因此出現這樣的問題,是由於Host字段用於客戶端指定本身想訪問的http服務器的域名/IP 地址和端口號。也就是說,當我設置爲blog.jobbole.com這個域名之後,就沒法再對圖片進行請求,由於我請求的圖片並不是在這個域名之下spa

相關文章
相關標籤/搜索