Веб-скребок содержимого симулятора - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь собрать некоторые данные в симуляторах с сайтов, но я застрял на одном из них.Я не могу получить структуру JSON.

Это то, что я пробовал:

import requests

url_puzzle = 'https://puzzle.pt/scripts/ITSector_Simulator.js?'
headers_puzzle = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} 

response_puzzle = requests.get(url_puzzle, headers=headers_puzzle).json()

Я хочу получить TAN, TAEG, MTIC ... этосимулятор возвращает или всю структуру JSON, которая подается в симулятор.

1 Ответ

0 голосов
/ 24 мая 2019

Долгий путь будет заключаться в нажатии +/- для достижения ваших целевых значений.Это использует селен.Вы можете использовать sendKeys для amount и days webElements вместо нажатия.

например

amount.clear()
amount.send_keys(escolher_o_montante)
days.clear()
days.send_keys(definir_o_prazo) 

Я не могу проверить это в настоящее время.Возможно, вам понадобится добавить '€' и 'meses'.Не уверен, что не могу проверить, сработает ли эта опция.

Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

url = 'https://puzzle.pt/pt'
d = webdriver.Chrome()
d.get(url)
d.maximize_window()
escolher_o_montante = 2000
definir_o_prazo = 40
marcar_o_dia_dos_pagamentos = 1 #24

amount = d.find_element_by_css_selector('#simAmountInput')
days = d.find_element_by_css_selector('#simDaysInput')
up_amount = d.find_element_by_css_selector('#amountSlider + .slider-plus')
down_amount = d.find_element_by_css_selector('[data-for=amountSlider].slider-minus')
up_days = d.find_element_by_css_selector('#deadlineSlider + .slider-plus')
down_days = d.find_element_by_css_selector('[data-for="amountSlider"].slider-minus')
one = d.find_element_by_css_selector('#day38')
twenty_four = d.find_element_by_css_selector('#day52')
amount.clear()

while amount.get_attribute('value').replace(' €','') != escolher_o_montante:
    current_amount = amount.get_attribute('value').replace(' €','')
    if int(current_amount) > escolher_o_montante: down_amount.click()
    if int(current_amount) < escolher_o_montante: up_amount.click()

while days.get_attribute('value').replace(' meses','') != definir_o_prazo:
    current_days = days.get_attribute('value').replace(' €','')
    if int(current_days) > definir_o_prazo: down_days.click()
    if int(current_days) < definir_o_prazo: up_days.click()

if marcar_o_dia_dos_pagamentos == 1:
    one.click()
else if marcar_o_dia_dos_pagamentos == 24:
    twenty_four.click()
else:
    print('invalid option')

mtic = d.find_element_by_css_selector('#TotalvalueToReturn').text
tan = d.find_element_by_css_selector('#TanValue').text
taeg = d.find_element_by_css_selector('#TAEGValue').text
prestação_mensal = d.find_element_by_css_selector('#MonthlyValueToReturn').text
...