kkawamu1 commited on
Commit
db5b570
·
1 Parent(s): 01ba592

Add link and fix google finance

Browse files
Files changed (1) hide show
  1. app.py +44 -17
app.py CHANGED
@@ -4,15 +4,11 @@ import requests
4
  from bs4 import BeautifulSoup
5
 
6
  example_tickers = [
7
- {"Ticker": "PLD", "Company Name": "Prologis Inc"},
8
- {"Ticker": "PSA", "Company Name": "Public Storage"},
9
- {"Ticker": "O", "Company Name": "Realty Income Corp"},
10
- {
11
- "Ticker": "META",
12
- "Company Name": "Meta Platforms",
13
- },
14
- {"Ticker": "AMZN", "Company Name": "Amazon.com"},
15
- {"Ticker": "MSFT", "Company Name": "Microsoft Corporation"},
16
  ]
17
 
18
 
@@ -41,21 +37,32 @@ def get_esg_from_yahoo_finance(row):
41
  row["Environmental Risk Score"] = None
42
  row["Social Risk Score"] = None
43
  row["Governance Risk Score"] = None
 
 
 
 
 
 
44
  return row
45
 
46
 
47
  def get_esg_score_from_google_finance(row):
 
48
  headers = {
49
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36"
50
  }
 
 
 
51
 
52
- html = requests.get(
53
- f"https://www.google.com/finance/quote/META:NASDAQ", headers=headers, timeout=30
54
- ).text
55
  soup = BeautifulSoup(html, "html.parser")
56
  scores = soup.find_all("div", {"class": "IPIeJ"})
 
 
57
 
58
- row["CDP Score"] = scores[0].find("div", {"class": "P6K39c"}).text
 
 
59
 
60
  return row
61
 
@@ -65,26 +72,46 @@ example_input_data = pd.DataFrame(example_tickers)
65
 
66
  inputs = [
67
  gr.Dataframe(
68
- row_count=(6, "dynamic"),
69
- col_count=(1, "dynamic"),
70
  label="Input Data",
71
  interactive=1,
 
 
 
 
 
72
  )
73
  ]
74
 
75
  outputs = [
76
  gr.Dataframe(
77
- row_count=(6, "dynamic"),
78
- col_count=(7, "fixed"),
79
  label="ESG Scores",
80
  headers=[
81
  "Ticker",
82
  "Company Name",
 
83
  "Total ESG Risk Score",
84
  "Environmental Risk Score",
85
  "Social Risk Score",
86
  "Governance Risk Score",
 
87
  "CDP Score",
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  ],
89
  )
90
  ]
 
4
  from bs4 import BeautifulSoup
5
 
6
  example_tickers = [
7
+ {"Ticker": "PLD", "Company Name": "Prologis Inc", "Market": "NYSE"},
8
+ {"Ticker": "PSA", "Company Name": "Public Storage", "Market": "NYSE"},
9
+ {"Ticker": "META", "Company Name": "Meta Platforms", "Market": "NASDAQ"},
10
+ {"Ticker": "MSFT", "Company Name": "Microsoft Corporation", "Market": "NASDAQ"},
11
+ {"Ticker": "AMZN", "Company Name": "Amazon.com", "Market": "NASDAQ"},
 
 
 
 
12
  ]
13
 
14
 
 
37
  row["Environmental Risk Score"] = None
38
  row["Social Risk Score"] = None
39
  row["Governance Risk Score"] = None
40
+
41
+ row["Yahoo Finance Link"] = (
42
+ f"[Yahoo Link](https://finance.yahoo.com/quote/"
43
+ + row.Ticker
44
+ + "/sustainability)"
45
+ )
46
  return row
47
 
48
 
49
  def get_esg_score_from_google_finance(row):
50
+ print(row)
51
  headers = {
52
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36"
53
  }
54
+ link = f"https://www.google.com/finance/quote/{row.Ticker}:{row.Market}"
55
+
56
+ html = requests.get(link, headers=headers, timeout=30).text
57
 
 
 
 
58
  soup = BeautifulSoup(html, "html.parser")
59
  scores = soup.find_all("div", {"class": "IPIeJ"})
60
+ if scores:
61
+ row["CDP Score"] = scores[0].find("div", {"class": "P6K39c"}).text
62
 
63
+ else:
64
+ row["CDP Score"] = None
65
+ row["Google Finance Link"] = f"[Google Finance Link]({link})"
66
 
67
  return row
68
 
 
72
 
73
  inputs = [
74
  gr.Dataframe(
75
+ row_count=(5, "dynamic"),
76
+ col_count=(3, "dynamic"),
77
  label="Input Data",
78
  interactive=1,
79
+ headers=[
80
+ "Ticker",
81
+ "Company Name",
82
+ "Market",
83
+ ],
84
  )
85
  ]
86
 
87
  outputs = [
88
  gr.Dataframe(
89
+ row_count=(5, "dynamic"),
90
+ col_count=(10, "fixed"),
91
  label="ESG Scores",
92
  headers=[
93
  "Ticker",
94
  "Company Name",
95
+ "Market",
96
  "Total ESG Risk Score",
97
  "Environmental Risk Score",
98
  "Social Risk Score",
99
  "Governance Risk Score",
100
+ "Yahoo Finance Link",
101
  "CDP Score",
102
+ "Google Finance Link",
103
+ ],
104
+ datatype=[
105
+ "str",
106
+ "str",
107
+ "str",
108
+ "str",
109
+ "str",
110
+ "str",
111
+ "str",
112
+ "markdown",
113
+ "str",
114
+ "markdown",
115
  ],
116
  )
117
  ]