我正在嘗試使用scrapy和scrapy-splash獲取請求狀態代碼,下面是spider代碼。如何從scrapy-splash獲取200以外的狀態代碼
class Exp10itSpider(scrapy.Spider):
name = "exp10it"
def start_requests(self):
urls = [
'http://192.168.8.240:8000/xxxx'
]
for url in urls:
#yield SplashRequest(url, self.parse, args={'wait': 0.5, 'dont_redirect': True},meta={'handle_httpstatus_all': True})
#yield scrapy.Request(url, self.parse, meta={'handle_httpstatus_all': True})
yield scrapy.Request(url, self.parse, meta={'handle_httpstatus_all': True,'splash': {
'args': {
'html': 1,
'png': 1,
}
}
}
)
def parse(self, response):
input("start .........")
print("status code is:\n")
input(response.status)
我的起始URL http://192.168.8.240:8000/xxxx
是404個狀態碼的網址,也有在threee種請求方式:
第一個是:
yield SplashRequest(url, self.parse, args={'wait': 0.5, 'dont_redirect': True},meta={'handle_httpstatus_all': True})
第二個是:
yield scrapy.Request(url, self.parse, meta={'handle_httpstatus_all': True})
第三個是:
yield scrapy.Request(url, self.parse, meta={'handle_httpstatus_all': True,'splash': { 'args': { 'html': 1, 'png': 1, } } } )
只有第二個請求的方式yield scrapy.Request(url, self.parse, meta={'handle_httpstatus_all': True})
可以得到正確的狀態代碼404
,第一和第三都得到狀態代碼200
,這是說,以後我嘗試使用scrapy -splash,我無法獲得正確的狀態代碼404
,你能幫我嗎?
我嘗試使用下面的代碼,http_status_from_error_code = True,但仍然失敗。 'yield scrapy.Request(url,self.parse,meta = {'handle_httpstatus_all':True,'splash':{ 'args':{ 'html':1, 'png':1, }, 'magic_response':True, 'http_status_from_error_code':True } } )''' –
爲什麼不使用'SplashRequest'?這是與Scrapy一起使用Splash的推薦方式。 –
我嘗試使用下面的代碼SplashRequest,但仍然失敗.'yield SplashRequest(url,self.parse,args = {'wait':0.5,'dont_redirect':True},meta = {'handle_httpstatus_all':True}) '我使用不正確? –