This scrape some math solver websites.
https://www.cymath.com/
https://www.wolframalpha.com/
https://www.symbolab.com/
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
GETINPUT = True
uinput = "1+1"
if (GETINPUT == True ):
uinput = input ("Enter Input: " )
runWOLFRAM = True
runCYMATH = True
runSYMBOLAB = True
browser = webdriver .PhantomJS (executable_path = 'C:\\ phantomjs-2.1.1-windows\\ bin\\ phantomjs.exe' )
def formaturlexpr (expr , urlbase , site ):
# sin(3*x)%2B4%3D4-5*pi
if (site == "wolfram" or site == "cymath" ):
eu1 = expr .replace ('+' ,'%2B' )
eu2 = eu1 .replace ('=' ,'%3D' )
eu3 = eu2 .replace ('/' ,'%2F' )
endurl = eu3
finalurl = urlbase + endurl
# print(finalurl)
return finalurl
elif (site == "symbolab" ):
eu1 = expr .replace ('+' ,'%2B' )
eu2 = eu1 .replace ('=' ,'%3D' )
eu3 = eu2 .replace ('/' ,'%2F' )
eu4 = eu3 .replace ('sin' ,'/sin' )
eu5 = eu4 .replace ('(' ,'\\ left(' )
eu6 = eu5 .replace (')' ,'\\ right)' )
eu7 = eu6 .replace ('*' ,'\\ cdot' )
endurl = eu7
finalurl = urlbase + endurl
# print(finalurl)
return finalurl
Function for WolframAlpha
site = "https://www.wolframalpha.com/input/?i="
def WolframFunction ():
sitedemo = "https://www.wolframalpha.com/input/?i=sin(x)%3D24"
site = formaturlexpr (uinput , "https://www.wolframalpha.com/input/?i=" , "wolfram" )
browser .set_window_size (1120 , 550 )
browser .get (site )
browser .save_screenshot ('wolframscreenshot.png' )
html = browser .page_source
soup = BeautifulSoup (html , 'html.parser' )
SymbolicSolution = soup .find (id = "SymbolicSolution" )
imglist = SymbolicSolution .find_all ('img' , class_ = 'ng-isolate-scope' , alt = True )
print ("WOLFRAMALPHA" )
for item in imglist :
# print(item.get_text())
print (item ['alt' ])
def CymathFunction ():
sitedemo = "https://www.cymath.com/answer?q=sin(x)%3D24"
site = formaturlexpr (uinput , "https://www.cymath.com/answer?q=" , "cymath" )
browser .set_window_size (1120 , 550 )
browser .get (site )
browser .save_screenshot ('cymathscreenshot.png' )
html = browser .page_source
soup = BeautifulSoup (html , 'html.parser' )
stepsdivlist = soup .find_all (id = "steps_div" )
itnlist = soup .find_all (class_ = 'itn' )
katexlist = soup .find_all (class_ = 'katex' )
listmord = soup .find_all (class_ = 'mord mathrm' )
sollist = soup .findChildren (class_ = 'base textstyle uncramped' )
hiddenanswers = soup .find (id = "answer" )
print ("CYMATH" )
hiddenanswertext = hiddenanswers .get_text ()
# print(hiddenanswertext)
hat1 = hiddenanswertext .replace ('),sequence(' ,' & ' )
hat2 = hat1 .replace ('sequence(' , ' ' )
hat3 = hat2 [:- 1 ]
hat4 = hat3 .replace ('PI' , 'π' )
hiddenanswertext = hat4
print (hiddenanswertext )
def SymbolabFunction ():
sitedemo = "https://www.symbolab.com/solver/step-by-step/sin%5Cleft(x%5Cright)%3D24"
site = "https://www.symbolab.com/solver/step-by-step/sin%5Cleft(x%5Cright)%3D24"
browser .set_window_size (1120 , 550 )
browser .get (site )
browser .save_screenshot ('symbolabscreenshot.png' )
html = browser .page_source
soup = BeautifulSoup (html , 'html.parser' )
selectablelist = soup .find_all (class_ = 'selectable' )
solutionslist = soup .find_all (class_ = 'solution_step_list_item' )
# print(solutionsteplist)
print ("SYMBOLAB" )
for item in solutionslist :
print (item .get_text ())
Write together and Run code
if runWOLFRAM == True :
try :
WolframFunction ()
except :
print ("Wolfram gave up!" )
if runCYMATH == True :
try :
CymathFunction ()
except :
print ("Cymath gave up!" )
if runSYMBOLAB == True :
try :
SymbolabFunction ()
except :
print ("Symbolab gave up!" )