背景是用scrapy来抓取一个网站的列表页的时候有一个url是404,其它url是200,但是我在判断状态码的时候发现了一些问题
def start_requests(self):
yield Request(url=self.url,callback=self.parse_project,errback=self.errback_httpbin))#这个url是200
def parse_project(self, response):
UrlModel().update_url_status((self.name, self.source, self.url, self.ch_area, self.ch_city, self.ch_region,
self.en_area, self.en_city, self.en_region, response.status, self.type))
for i in range(10):
detail_url='http://www.bac.xn/im/'+str(i)+'html' #假设其中九个200其中一个url状态码是404
yield self.make_requests_from_url(detail_url)
def make_requests_from_url(self, url):
return Request(url,callback=self.parse_info)
def parse_info(self, response):
print response.status
print requests.get(response.url).status_code
这是基本逻辑demo(别傻了,我会提交完整代码才怪)。
理想状态下response.status的状态码是response.url的。
现在的问题是在parse_info函数中response.status的状态码全部都是200,但是requests.get(response.url).status_code的状态码有一个会显示404。
我要的结果也是9条200一条404。很明显requests.get(response.url).status_code是对的,但是response.status 在一个不知道的地方出现了错误
requests。它是一个Python第三方库