✏️ 正在编辑: YuppieScrap.py
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Service/Scraping/YuppieScrap.py
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
#coding: utf-8 import sys import requests, lxml.html import re import datetime as DT #------------------------------------------FUNÇÃO PARA RETORNAR OS CAMPOS DO FORMULÁRIO DE RELATÓRIO------------------------ def getFormFieldsCount(response_report): split_input = response_report.text.split("|") items = dict(zip(split_input[2::4], split_input[3::4])) form = dict((key, value) for (key, value) in items.items() if '__' in key) form['__VIEWSTATEFIELDCOUNT'] = len(form)-5 return form #------------------------------------------VARIÁVEIS------------------------------------------------------------------------ usuario = sys.argv[1] senha = sys.argv[2] date_format = "%d/%m/%Y" today = DT.date.today() two_ago = today - DT.timedelta(days=2) data_de = two_ago.strftime(date_format) data_ate = today.strftime(date_format) #---------------------------------------------------------------------------------------------------------------------------- session = requests.session() header = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} #-----------------------------------------ACESSANDO PÁGINA DE LOGIN---------------------------------------------------------- login_page = session.get('https://www.bradescopromotoranet.com.br/Login.aspx',headers=header) login_html = lxml.html.fromstring(login_page.text) hidden_inputs = login_html.xpath(r'//form//input[@type="hidden"]') form_login = dict((x.attrib["name"], x.attrib["value"]) for x in hidden_inputs) #-----------------------------------------SETANDO ATRIBUTOS PARA LOGIN-------------------------------------------------------- form_login['__EVENTTARGET'] = "" form_login['__EVENTARGUMENT'] = "" form_login['ctl00$ctl00$cphBodyMain$cphBody$txtLogin'] = usuario #"yuppie@primecorban" form_login['ctl00$ctl00$cphBodyMain$cphBody$txtSenha'] = senha #"yuppie123456786" form_login['ctl00$ctl00$cphBodyMain$cphBody$btnEntrar'] = "" #------------------------------------------ENVIANDO REQUISIÇÃO PARA LOGIN----------------------------------------------------- session.post('https://www.bradescopromotoranet.com.br/Login.aspx', data=form_login, headers=header) #------------------------------------------ACESSANDO PÁGINA DE RELATÓRIO------------------------------------------------------ session.get('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx',headers=header) login_result = report_page = session.get('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx',headers=header) report_page_html = lxml.html.fromstring(report_page.text) hidden_inputs_report = report_page_html.xpath(r'//form//input[@type="hidden"]') form_report = dict((x.attrib["name"], x.attrib["value"]) for x in hidden_inputs_report) #------------------------------------------RECUPERANDO OS VALORES DE GRUPOS FILTRO E PROMOTORA FILIAL-------------------------- grupos_filtro_select = report_page_html.xpath(r'//select[@id="cphBodyMain_cphBody_ddlGruposFiltro"]/option[@selected="selected"]') grupos_filtro_value = grupos_filtro_select[0].attrib["value"] promotora_filial_select = report_page_html.xpath(r'//select[@id="cphBodyMain_cphBody_ddlPromotoraFilialFiltro"]/option[2]') response_report = None if len(promotora_filial_select) > 0: promotora_filial_value = promotora_filial_select[0].attrib["value"] # ------------------------------------------- REQUEST PROMOTORA FILIAL------------------------------------------------------------------ form_report['__VIEWSTATEFIELDCOUNT'] = len(form_report)-5 # Adicionado apenas no primeiro form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro' form_report['__EVENTARGUMENT'] = '' form_report['__LASTFOCUS'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST GRUPO DE CONVENIOS------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST CONVENIOS------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST EMPRESAS------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST GRUPO DE PRODUTOS------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST PRODUTOS------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlProduto' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlProduto' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST LOJA------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlLoja' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlLoja' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST BOTAO PESQUISAR------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$btnPesquisar' form_report['__EVENTTARGET'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$btnPesquisar'] = 'Pesquisar' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) control_id_value = re.search('OpType=SessionKeepAlive&ControlID=(.*.)&Mode=true',response_report.text).group(1) response_report_control_id = session.post("https://www.bradescopromotoranet.com.br/Reserved.ReportViewerWebControl.axd?OpType=SessionKeepAlive&ControlID="+control_id_value+"&Mode=true",headers=header) #------------------------------------------- REQUEST LOAD TARGET------------------------------------------------------------------ items = [x.group() for x in re.finditer('__.*?\|\d+\|', response_report.text)] form_report = dict((k[0],k[1]) for k in [k.split('|') for k in items if k != '']) # form_report = {k[0]:k[1] for k in [k.split('|') for k in items if k != '']} form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$Reserved_AsyncLoadTarget' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$Reserved_AsyncLoadTarget' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl03$ctl00'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl03$ctl01'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl10'] = 'ltr' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl11'] = 'standards' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$AsyncWait$HiddenCancelField'] = 'False' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ToggleParam$store'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ToggleParam$collapse'] = 'false' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl05$ctl00$CurrentPage'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl05$ctl03$ctl00'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl08$ClientClickedId'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl07$store'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl07$collapse'] = 'false' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$VisibilityState$ctl00'] = 'None' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ScrollPosition'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl02'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl03'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl04'] = '100' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) else: promotora_filial_select = report_page_html.xpath(r'//select[@id="cphBodyMain_cphBody_ddlPromotoraFilialFiltro"]/option[@selected="selected"]') promotora_filial_value = promotora_filial_select[0].attrib["value"] empresa_select = report_page_html.xpath(r'//select[@id="cphBodyMain_cphBody_ddlEmpresa"]/option[2]') empresa_select_value = empresa_select[0].attrib["value"] form_report['__VIEWSTATEFIELDCOUNT'] = len(form_report)-5 # Adicionado apenas no primeiro form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = empresa_select_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # ------------------------------------------- REQUEST BOTAO PESQUISAR------------------------------------------------------------------ form_report = getFormFieldsCount(response_report) form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$btnPesquisar' form_report['__EVENTTARGET'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = empresa_select_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$btnPesquisar'] = 'Pesquisar' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) control_id_value = re.search('OpType=SessionKeepAlive&ControlID=(.*.)&Mode=true',response_report.text).group(1) response_report_control_id = session.post("https://www.bradescopromotoranet.com.br/Reserved.ReportViewerWebControl.axd?OpType=SessionKeepAlive&ControlID="+control_id_value+"&Mode=true",headers=header) #------------------------------------------- REQUEST LOAD TARGET------------------------------------------------------------------ items = [x.group() for x in re.finditer('__.*?\|\d+\|', response_report.text)] form_report = dict((k[0],k[1]) for k in [k.split('|') for k in items if k != '']) # form_report = {k[0]:k[1] for k in [k.split('|') for k in items if k != '']} form_report['ctl00$ctl00$ScriptManager1'] = 'ctl00$ctl00$ScriptManager1|ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl10$Reserved_AsyncLoadTarget' form_report['__EVENTTARGET'] = 'ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl10$Reserved_AsyncLoadTarget' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGruposFiltro'] = grupos_filtro_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlPromotoraFilialFiltro'] = promotora_filial_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlConvenioFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEmpresa'] = empresa_select_value form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlGrupoProdutosFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlProduto'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlLoja'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlFilialFiltro'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlSistema'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtCpf'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataInicial'] = data_de form_report['ctl00$ctl00$cphBodyMain$cphBody$txtDataFinal'] = data_ate form_report['ctl00$ctl00$cphBodyMain$cphBody$ddlEtapas'] = '-1' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtContrato'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$txtNrProposta'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl03$ctl00'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl03$ctl01'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl11'] = 'ltr' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl12'] = 'standards' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$AsyncWait$HiddenCancelField'] = 'False' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ToggleParam$store'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ToggleParam$collapse'] = 'false' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl05$ctl00$CurrentPage'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl05$ctl03$ctl00'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl08$ClientClickedId'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl07$store'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl07$collapse'] = 'false' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$VisibilityState$ctl00'] = 'None' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ScrollPosition'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl02'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl03'] = '' form_report['ctl00$ctl00$cphBodyMain$cphBody$rptPosicaoProposta$ctl09$ReportControl$ctl04'] = '100' form_report['__ASYNCPOST'] = 'true' response_report = session.post('https://www.bradescopromotoranet.com.br/forms/relatorios/RelatorioPosicaoPropostas.aspx', data=form_report, headers=header) # --------------------------------------------GERANDO RELATÓRIO CSV------------------------------------------------------------------ result = lxml.html.fromstring(response_report.text) table = result.xpath('//table')[-1] table_class = table.attrib['class'] table_class = '//table[@class="%s"]' % (table_class, ) csvlist = [] csvtext = "" for table in result.xpath(table_class): for l, tr in enumerate(table.xpath('//tr')): csvlist.append("\r\n") c = 0 for td in tr.xpath('td/div|td'): if td.text is not None: if td.text == u'\u00A0': csvlist.append('' + ';') else: csvlist.append(td.text + ';') else: c -= 1 c += 1 for s in csvlist: csvtext = csvtext + s print "%s\n" % csvtext.encode("utf-8")
💾 保存文件
← 返回文件管理器