您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)怎么對(duì)scrapy頭部進(jìn)行修改,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
被Scrapy自動(dòng)添加的頭部
在沒(méi)有任何配置的情況下,scrapy會(huì)對(duì)請(qǐng)求默認(rèn)加上一些頭部信息
Scrapy會(huì)通過(guò)配置文件中的USER_AGENT配置,自動(dòng)為頭部添加User-Agent,這條配置會(huì)被任何包含User-Agent的配置覆蓋
當(dāng)請(qǐng)求經(jīng)過(guò)下載器后,會(huì)被自動(dòng)添加頭部Accept-Encoding: gzip,deflate, 會(huì)被任意包含Accept-Encoding的頭部配置覆蓋
配置settings.py文件中默認(rèn)的頭部
#DEFAULT_REQUEST_HEADERS = { # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # 'Accept-Language': 'en' #}
當(dāng)這個(gè)配置屬于注釋狀態(tài)時(shí),頭部被設(shè)置為Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8與
Accept-Language: en,可以通過(guò)取消注釋修改或增刪其中的內(nèi)容
優(yōu)先級(jí)
可以在爬蟲(chóng)中通過(guò)custom_settings設(shè)置配置僅在當(dāng)前爬蟲(chóng)生效
class XXXSpider(scrapy.Spider): ... custom_settings = { DEFAULT_REQUEST_HEADERS = {...} } ....
在Request中設(shè)置頭部
當(dāng)給引擎返回Request時(shí),可以為他配置頭部
... def parse(self): headers = { ... } yield scrapy.Request(url, headers=headers)
優(yōu)先級(jí)
在中間件中配置
當(dāng)Request請(qǐng)求通過(guò)下載中間件發(fā)往下載器時(shí),可以通過(guò)下載中間件配置頭部
class XXXDownloaderMiddleware def process_request(self, request, spider): request.headers["key"] = value return None
還需要在配置文件中啟用下載中間價(jià)
DOWNLOADER_MIDDLEWARES = { 'project.middlewares.XXXDownloaderMiddleware': 543, }
優(yōu)先級(jí)
referer中間件
當(dāng)存在多次請(qǐng)求時(shí),referer中間件會(huì)自動(dòng)幫Request的頭部中的referer加上上一次請(qǐng)求的url
優(yōu)先級(jí)
關(guān)閉referer中間件
在配置文件中添加REFERER_ENABLED=False即可關(guān)閉
優(yōu)先級(jí)分析
Scrapy自動(dòng)添加的User-Agent與Accept-Encoding < 配置文件中的默認(rèn)配置DEFAULT_REQUEST_HEADERS < Request中修改的header < 中間件中添加的header < referer中間件添加的referer
關(guān)于怎么對(duì)scrapy頭部進(jìn)行修改就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。