Reputation: 65
I am trying to execute the below code, It uses requests to fetch data from github repository when I run on my local with parameter verify=False it runs properly but when i run this in browser it gives ssl Error, I am using python3.10 version code tries to fetch csv files from github repositories and do some manipulation with it, It uses requests.get method but when I run the code in browser i end up wit the ssl error even after setting verify=False
#The below code tries to fetch csv files from github repositories and do some manipulation with it,
It uses requests.get method but when I run the code in browser i end up wit the ssl error even after setting verify=False.#
<py-env>
- matplotlib
- pandas
- seaborn
- requests
- lxml
</py-env>
<py-script>
import pandas as pd
import matplotlib.pyplot as plt
import glob
import os
import sys
import seaborn as sns
from js import document
from pyodide import create_proxy
from pyodide.http import open_url
from lxml import html
import requests
# Get the data#
def selectChange(event):
page = requests.get('https://github.com/Nitink2001/EnergyUpgraded.git',verify=False)
webpage = html.fromstring(page.content)
path = webpage.xpath('//a/@href')
li = []
for p in path:
if p.endswith('.csv'):
url = 'https://github.com'+p.replace('/blob/', '/raw/')
df = pd.read_csv(url)
li.append(df.T)
frame = pd.concat(li)
frame.dropna(inplace=True)
print(frame.head())
choice = document.getElementById("hdem").value
console.log(choice)
def setup():
# Create a JsProxy for the callback function#
change_proxy = create_proxy(selectChange)
e = document.getElementById("hdem")
e.addEventListener("change", change_proxy)
setup()
</py-script>
When i run this code I encounter with the below error
pyodide.asm.js:14
# Python exception:
Traceback (most recent call last):
File "/lib/python3.10/site-packages/urllib3/connectionpool.py", line 692, in urlopen
conn = self._get_conn(timeout=pool_timeout)
File "/lib/python3.10/site-packages/urllib3/connectionpool.py", line 281, in _get_conn
return conn or self._new_conn()
File "/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1009, in _new_conn
raise SSLError(
urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
#I have tried almost all the method available on stackoverflows still I am unable to fix the error.#
Upvotes: 2
Views: 4036
Reputation: 81336
Your problem is caused by importing the requests package.
The Requests package uses the operating system TCP Socket API. That API is not available in web browsers. That limitation is a security restriction imposed on all browser-based applications.
Python packages that import the requests package are not supported in PyScript.
Modify your code using one of the following methods.
from pyodide.http import open_url
page = open_url('https://github.com/Nitink2001/EnergyUpgraded.git')
Note: There is a usage restriction for open_url(). That API can only return text based data and does not support binary.
PyScript has the function pyfetch():
import asyncio
from pyodide.http import pyfetch
# this code must be in an "async" function
async def myfunc():
response = await pyfetch('https://github.com/Nitink2001/EnergyUpgraded.git')
data = await response.text()
PyScript also supports the browser Fetch API, which is the API I recommend using:
import asyncio
from js import fetch
# this code must be in an "async" function
async def myfunc():
response = await fetch('https://github.com/Nitink2001/EnergyUpgraded.git')
data = await response.text()
Upvotes: 4