HttpClient.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:ZhihuScrapy 作者: wcsjtu 项目源码 文件源码
def url_request(self, method_, url_, payloads_, headers_):
        """
        @params: method, http method, 'GET' or 'POST', or 'PUT', or 'DELETE', or 'HEAD'
                 url, url, string, absolute url of resource at goal webserver
                 payloads, dict or None, extra data to send when visit certain resource
                 headers, dict  or None, customed headers
        @return: if http status is 200, this function will return [[data], url, payloads, headers]
                 if occurs connection error or http status is not 200, this function will return None
        """
        try:
            header = self.default_headers if headers_ is None else headers_
            payloads = urllib.urlencode(payloads_) if payloads_ is not None else None
            if payloads is not None:
                pass
            rqst = self.session.request(method=method_, url=url_, params=payloads, headers=header, timeout=10) 
            if 'Set-Cookie' in rqst.headers or 'Set-Cookie2' in rqst.headers:
                self.session.cookies.save(ignore_discard=True)
            if rqst.status_code != 200:
                rqst = self.session.request(method=method_, url=url_, params=payloads, headers=header, timeout=10)
                if rqst.status_code != 200:
                    gl.g_fail_url.warning('%s %s'%(url_, str(payloads_)))
                    return None
            return HttpQuint(url_, headers_, payloads_, [rqst.content], rqst.headers)
            #return [[rqst.content], method_, url_, payloads_, headers_]

        except (requests.HTTPError, requests.Timeout, requests.ConnectionError, requests.TooManyRedirects), e: 
            tips = '%s when visit %s '%(e, url_) if payloads_ is None else '%s when \
                    visit %s with data %s'%(e, url_, str(payloads_).decode('unicode_escape'))
            self.logger.error(tips)
            gl.g_fail_url.warning('%s %s'%(url_, str(payloads_)))
            return None
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号