From 4054bfce89de4d98c3c7dc72b9ef8123ee00453e Mon Sep 17 00:00:00 2001 From: ngfchl Date: Thu, 1 Sep 2022 21:54:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BC=98=E5=8C=96=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=97=B6=E9=AD=94=E8=8E=B7=E5=8F=96=E5=A4=B1=E8=B4=A5=E6=98=AF?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA0=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=9B=A0?= =?UTF-8?q?=E6=AD=A4=E5=AF=BC=E8=87=B4=E5=85=B6=E4=BB=96=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=A4=B1=E8=B4=A5=202.=20=E6=9C=AC=E6=AC=A1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9C=80=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pt_site/UtilityTool.py | 64 +++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index ece387c..2cd0d50 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -158,9 +158,11 @@ class PtSpider: data: dict = None, timeout: int = 20, delay: int = 15, + headers=None, proxies: dict = None): site = my_site.site scraper = self.get_scraper(delay=delay) + self.headers = headers for k, v in eval(site.sign_in_headers).items(): self.headers[k] = v # print(self.headers) @@ -493,6 +495,7 @@ class PtSpider: text = self.parse(res, '//script/text()') if len(text) > 0: location = self.parse_school_location(text) + print('学校签到链接:', location) if 'addbouns.php' in location: self.send_request(my_site=my_site, url=site.url + location.lstrip('/')) signin_today.sign_in_today = True @@ -764,7 +767,7 @@ class PtSpider: # 解析HTML # print(user_detail_res.is_redirect) details_html = etree.HTML(converter.convert(user_detail_res.content)) - if 'school' in site.url: + if 'btschool' in site.url: text = details_html.xpath('//script/text()') if len(text) > 0: location = self.parse_school_location(text) @@ -932,7 +935,7 @@ class PtSpider: # print('下载数:', leech) try: res_sp_hour = self.get_hour_sp(my_site=my_site) - if res_sp_hour.code == StatusCodeEnum.OK.code: + if res_sp_hour.code != StatusCodeEnum.OK.code: logging.error(my_site.site.name + res_sp_hour.msg) else: my_site.sp_hour = res_sp_hour.data @@ -963,18 +966,45 @@ class PtSpider: def get_hour_sp(self, my_site: MySite): """获取时魔""" site = my_site.site - response = self.send_request( - my_site=my_site, - url=site.url + site.page_mybonus, - ) - res = converter.convert(response.content) - print('时魔响应', response.status_code) - # print('转为简体的时魔页面:', str(res)) - # res_list = self.parse(res, site.hour_sp_rule) - res_list = etree.HTML(res).xpath(site.hour_sp_rule) - print('时魔字符串', res_list) - if len(res_list) <= 0: - CommonResponse.error(msg='时魔获取失败!') - return CommonResponse.success( - data=get_decimals(res_list[0]) - ) + try: + response = self.send_request( + my_site=my_site, + url=site.url + site.page_mybonus, + ) + if 'btschool' in site.url: + """ + # print(response.content.decode('utf8')) + url = self.parse(response, '//form[@id="challenge-form"]/@action[1]') + data = { + 'md': ''.join(self.parse(response, '//form[@id="challenge-form"]/input[@name="md"]/@value')), + 'r': ''.join(self.parse(response, '//form[@id="challenge-form"]/input[@name="r"]/@value')) + } + print(data) + print('学校时魔页面url:', url) + response = self.send_request( + my_site=my_site, + url=site.url + ''.join(url).lstrip('/'), + method='post', + # headers=headers, + data=data + ) + """ + + res = converter.convert(response.content) + print('时魔响应', response.content) + # print('转为简体的时魔页面:', str(res)) + # res_list = self.parse(res, site.hour_sp_rule) + res_list = etree.HTML(res).xpath(site.hour_sp_rule) + print('时魔字符串', res_list) + if len(res_list) <= 0: + CommonResponse.error(msg='时魔获取失败!') + return CommonResponse.success( + data=get_decimals(res_list[0]) + ) + except Exception as e: + message = '时魔获取失败!' + logging.error(site.name + message) + return CommonResponse.success( + msg=message, + data=0 + )