from flask import Flask, render_template_string, request import requests import pandas as pd from bs4 import BeautifulSoup app = Flask(__name__) Charting_Link = "https://chartink.com/screener/" Charting_url = 'https://chartink.com/screener/process' # Replace this with your desired condition Condition = "( {33489} ( latest volume > latest sma( latest volume , 10 ) * 2 ) )" def GetDataFromChartink(payload): payload = {'scan_clause': payload} with requests.Session() as s: r = s.get(Charting_Link) soup = BeautifulSoup(r.text, "html.parser") csrf = soup.select_one("[name='csrf-token']")['content'] s.headers['x-csrf-token'] = csrf r = s.post(Charting_url, data=payload) df = pd.DataFrame() for item in r.json()['data']: df = df.append(item, ignore_index=True) return df @app.route('/', methods=['GET', 'POST']) def index(): data = None if request.method == 'POST': data = GetDataFromChartink(Condition) data = data.sort_values(by='per_chg', ascending=False) data.to_csv("Chartink_result.csv") return render_template_string(''' Chartink Data

Chartink Data Fetcher

{% if data is not none %}

Results:

{% for col in data.columns %} {% endfor %} {% for row in data.iterrows() %} {% for value in row[1] %} {% endfor %} {% endfor %}
{{ col }}
{{ value }}
{% endif %} ''', data=data) if __name__ == '__main__': app.run(debug=True)