Выскабливание данных из XHR с запросом - PullRequest
0 голосов
/ 13 июня 2019

Я хочу очистить данные этого сайта . Но результаты, которые я получаю, отличаются от тех, которые размещены на сайте. Например, когда я запускаю код для 14000 и продолжительностью 48 месяцев, я получаю 7,03 для TAE, в то время как значение на сайте составляет 6,44. Я думаю, что параметры установлены неправильно. Может ли кто-нибудь помочь мне?

Я изменил параметры несколькими способами, но это не сработало. Я не знаю, как найти нужные параметры.

import requests
from bs4 import BeautifulSoup
import re
import json
import pandas as pd

#Let's first collect few auth vars
r = requests.Session()
response = r.get("https://simuladores.bancosantander.es/SantanderES/loansimulatorweb.aspx?por=webpublica&prv=publico&m=100&cta=1&ls=0#/t0")
soup = BeautifulSoup(response.content, 'html')
key = soup.find_all('script',text=re.compile('Afi.AfiAuth.Init'))
pattern = r"Afi.AfiAuth.Init\((.*?)\)"

WSSignature = re.findall(pattern,key[0].text)[0].split(',')[-1].replace('\'','')
WSDateTime = re.findall(pattern,key[0].text)[0].split(',')[1].replace('\'','')

headers = {
    'Origin': 'https://simuladores.bancosantander.es',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
    'Content-Type': 'application/json;charset=UTF-8',
    'Accept': 'application/json, text/plain, */*',
    'WSSignature': WSSignature,
    'Referer': 'https://simuladores.bancosantander.es/SantanderES/loansimulatorweb.aspx?por=webpublica&prv=publico&m=100&cta=1&ls=0',
    'WSDateTime': WSDateTime,
    'WSClientCode': 'SantanderES',
}

#Those are the standard params of a request
params = {'wsInputs': {'finality': 'prestamo coche',
  'productCode': 'p100',
  'capitalOrInstallment': 5000,
  'monthsTerm': 96,
  'mothsInitialTerm': 12,
  'openingCommission': 1.5,
  'minOpeningCommission': 60,
  'financeOpeningCommission': True,
  'interestRate': 5.5,
  'interestRateReferenceIndex': 0,
  'interestRateSecondaryReferenceIndex': 0,
  'interestRateSecondaryWithoutVinculation': 6.5,
  'interestRateSecondaryWithAllVinculation': 0,
  'interestRateSecondary': 6.5,
  'loanDate': '2019-06-13',
  'birthDate': '2001-06-13',
  'financeLoanProtectionInsurance': True,
  'percentageNotaryCosts': 0.003,
  'loanCalculationMethod': 0,
  'calculationBase': 4,
  'frecuencyAmortization': 12,
  'frecuencyInterestPay': 12,
  'calendarConvention': 0,
  'taeCalculationBaseType': 4,
  'lackMode': 0,
  'amortizationCarencyMonths': 0,
  'typeAmortization': 1,
  'insuranceCostSinglePremium': 0,
  'with123': False,
  'electricVehicle': False}}
#The scraping function
def scrap(amount, duration, params):

    params['wsInputs']['capitalOrInstallment'] = amount
    params['wsInputs']['monthsTerm'] = duration
    response = r.post('https://simuladores.bancosantander.es/WS/WSSantanderTotalLoan.asmx/Calculate', headers=headers, data=json.dumps(params))
    return json.loads(response.content)['d']


Amounts = [13000]
Durations = [ 48, 60, 72, 84, 96]
results = []
for amount in Amounts:
    for duration in Durations:
        result = scrap(amount, duration, params)
        result['Amount'] = amount
        result['Duration'] = duration
        results.append(result)

df = pd.DataFrame(results)

1 Ответ

2 голосов
/ 13 июня 2019

Во-первых, как сказал @Richard, в вашем коде нет ничего плохого.

Причина, по которой вы получаете 7,03% вместо 6,44%, заключается в том, что симулятор ссуды, который вы используете, каким-то образом обманывает (появляетсяболее конкурентоспособным).Разница у вас заключается в рассмотрении Comisión de apertura financiada .Это означает, что если вы установите стандартный параметр 'openingCommission' в 0, вы получите 6.45% .Как насчет получения 6,44% ?Далее следует предложение.


Пояснение ( с использованием французской терминологии )

Если я вычислю ТЭГ и TAE, связанные с гиперпараметром {14k €, 48 месяцев, 330,47€ / м}, я получаю 6,26% и 6,44% .

Но если я сделаю тот же расчет, включая Comisión de apertura financiada из 210 € , я получаю ~ 7,03% и 7,23% .

enter image description here

, где i выше (и ниже) означает внутреннюю норму доходности (IRR) , то есть ставку, которая аннулирует уравнение (E1):

enter image description here


Это означает, что вам следует рассмотреть возможность интеграции решателя IRR в ваш рабочий процесс, используя доступные фрагменты информации (мелочи, продолжительность, общая сумма и даже сборы) дляпересчитать TAE.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...