Веб-лом с несколькими входами и сбор общей маржи требуется - PullRequest
2 голосов
/ 14 июня 2019

У меня есть веб-ссылка как:

url = "zerodha.com/margin-calculator/SPAN"

Здесь входные параметры со значениями образца для справки указаны ниже:

Exchange - NFO
Product - Options
Symbol - DHFL 27-JUN-19
Option Type - Calls
Strike Price - 120
Net Qty appears automatically as 1500, 

и Use SELLКнопка затем нажмите ADD Кнопка.

Я хочу получить требуемую общую маржу (в данном случае ее Rs 49,308), которая отображается в правом конце.

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вы можете просто использовать запросы. Если вы наблюдаете за своей сетью, вы можете видеть, что она выполняет запросы POST с выбранной полезной нагрузкой. Вот как бы я это сделал:

from requests import Session

BASE_URL = 'https://zerodha.com/margin-calculator/SPAN'

payload = {'action': 'calculate',
            'exchange[]': 'NFO',
            'product[]': 'FUT',
            'scrip[]': 'DHFL19AUG',
            'option_type[]': 'CE',
            'strike_price[]':120, 
            'qty[]': 4000,
            'trade[]': 'sell'
}



session = Session()

res = session.post(BASE_URL, data=payload)

data = res.json()

print(data)

Я получил URL и полезную нагрузку из сети наблюдений. Это то, что вы получите в виде данных в формате json. enter image description here

Результаты в Chrome и Python enter image description here

Просто посмотрите, как chrome или firefox отправляют и получают данные. И перепроектировать ваши запросы.

1 голос
/ 14 июня 2019

веб-сайт ссылка - данные таблицы запросов динамического рендеринга. Вы должны попробовать automation selenium library. это позволяет вам удалять динамические rendering request(js or ajax) данные страницы.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome("/usr/bin/chromedriver")

driver.get("https://zerodha.com/margin-calculator/SPAN")

# select  exchange   option of NFO
exchange = driver.find_element_by_name('exchange[]')
exchange.send_keys("NFO")

#  select product option of option
product = driver.find_element_by_name('product[]')
product.send_keys("OPT")

# select symbol  by option value
symbol = Select(driver.find_element_by_name("scrip[]"))
symbol.select_by_value("DHFL19JUN")

# select  option Type  CELL option
optionType = driver.find_element_by_name('option_type[]')
optionType.send_keys("CE")

#add Strike price
strikePrice = driver.find_element_by_name('strike_price[]')
strikePrice.clear()
strikePrice.send_keys("120")

# add Net quantity
netQty = driver.find_element_by_name('qty[]')
netQty.clear()
netQty.send_keys("1500")

# select sell radio button
driver.find_elements_by_css_selector("input[name='trade[]'][value='sell']")[0].click()

#submit form
submit = driver.find_element_by_css_selector("input[type='submit'][value='Add']")
submit.click()

time.sleep(2)

# scrap margin
margin = driver.find_element_by_css_selector(".val.total")
print(margin.text)

где '/usr/bin/chromedriver' путь к веб-драйверу селена.

Скачать веб-драйвер selenium для браузера Chrome:

http://chromedriver.chromium.org/downloads

Установить веб-драйвер для браузера Chrome:

https://christopher.su/2015/selenium-chromedriver-ubuntu/

Селен учебник:

https://selenium -python.readthedocs.io /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...