From f3f4be5793c5ffec8ae60e2d384e2065690386a2 Mon Sep 17 00:00:00 2001 From: g1879 <g1879@qq.com> Date: Sun, 7 Jun 2020 00:11:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=5Fmake=5Fresponse()=E7=9A=84?= =?UTF-8?q?kwargs=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=B9=B6=E5=8A=A0=E5=85=A5tim?= =?UTF-8?q?eout=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/session_page.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index 978e307..a742803 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -23,10 +23,10 @@ from .session_element import SessionElement, execute_session_find class SessionPage(object): """SessionPage封装了页面操作的常用功能,使用requests_html来获取、解析网页。""" - def __init__(self, session: HTMLSession): + def __init__(self, session: HTMLSession, timeout: float = 10): """初始化函数""" self._session = session - # self._locs = locs + self.timeout = timeout self._url = None self._url_available = None self._response = None @@ -195,17 +195,21 @@ class SessionPage(object): raise ValueError("mode must be 'get' or 'post'.") # 设置referer和host值 - if self._url: - if 'headers' in set(x.lower() for x in kwargs): - keys = set(x.lower() for x in kwargs['headers']) - if 'referer' not in keys: - kwargs['headers']['Referer'] = self._url - if 'host' not in keys: - kwargs['headers']['Host'] = urlparse(url).hostname - else: - kwargs['headers'] = self.session.headers + kwargs_set = set(x.lower() for x in kwargs) + if 'headers' in kwargs_set: + header_set = set(x.lower() for x in kwargs['headers']) + if self._url and 'referer' not in header_set: kwargs['headers']['Referer'] = self._url + if 'host' not in header_set: kwargs['headers']['Host'] = urlparse(url).hostname + else: + kwargs['headers'] = self.session.headers + kwargs['headers']['Host'] = urlparse(url).hostname + if self._url: + kwargs['headers']['Referer'] = self._url + + if 'timeout' not in kwargs_set: + kwargs['timeout'] = self.timeout try: r = None