WELCOME

To the Unofficial Official Pokedex






Image of current Pokemon
TYPING:
ABILITIES:
HEIGHT:
WEIGHT:
REGION:
 

HP

 

Attack

 

Defense

 

Special Attack

 

Special Defense

 

Speed

 

Total

WHO WE ARE

Hello, my name is Meekyle Mondal and I am a software engineering student at the University of Ottawa. I love coding and the world of computing, taking on various projects to better immerse myself with the wonders of technology. I'm currently a really big fan of web development and anything front-end related, but I don't mind working on the backend either. This is my LinkedIn, and you can find some more projects that I've worked on here.

Hi! My name is Pradyu Vasudev and I am also a software engineering student at the University of Ottawa. I love problem solving in general and coding offers me yet another way to solve problems. I love doing projects that interest me such as this Pokedex project, since Pokemon was always near and dear to my heart, I combined it with my desire to make a side project with coding. Currently, I enjoy doing back-end operations on a website and writing the base off of which a website functions. I don't mind working on the front-end, however using Python to web scrape on this project was really fun and a great experience. I am eager to learn more back-end technologies, such as Django and databases like MySQL. This is my LinkedIn, and projects will also be posted here on my Github page.

HOW IT WORKS

Before we discuss how it was all possible, we would first like to distinguish that Pradyu took on all the backend functionalities, and Meekyle focused on the front-end application. This was a really fun project to work on together!

Writing the web scraper was hard at first, but once I read the documentation and played around with it a little, it was very fun to work with. We start off with the method that loops through each Pokemon name which is grabbed in the main, and all the code in the method runs off that name, since it accesses that Pokemon's webpage. Tempsoup was the name given to each parsed webpage, and using the module imported from BeautifulSoup, it was just a matter of using various methods to find what was wanted on that page. Along with some logic, the raw HTML data was selected and filtered to provide what was desired. The url opening to download the pokemon images at first was blocked since the website thought it was a bot "mass" accessing the links. So I used a trick of some sorts, opening the url as a browser instead of the python urllib. StackOverflow helped me understand the problem and offered me a way to fix the problem. After deliberation, Meekyle and I decided we did not want to implement the evolutionary info onto the pokedex entries, however, I left the logic up in the code so that you may look at it and see how I went grabbing the evolution names as well as the conditions. That .txt is appended in the main code from the information obtained from the list appended through the method. The end results are present in the .txt file, which we used as a pseudo database. Now, Meekyle will explain how he went about designing the front end.

After having gotten the information from the web scraper and writing it all to a txt file (which we considered a pseudo-database for the website), it was a matter of writing JS code to get the text from the file. This is where the XMLHTTP Request came into play, but by no means was it trivial to implement. XMLHTTP Requests only work for valid web servers, and localhost is not one of these valid web servers. The only way to test and see if the code was working was to push it to the Github repository and wait for the Github Pages to update. It took a bit of time to adjust to, but we got used to it. After successfully retrieving the file's contents, it was a matter of formatting it into data that actually had some meaning (as it was just raw text before that point). With the help of the .split() method and A LOT of string indexing, the data in the txt file was finally in a format that was usable by Javascript. Then it was just a matter of populating a dictionary, with the key being the pokemon's name and the values being the data retrieved for each pokemon. Then all that needed to be done was to display the data in a visually appealing way, and that's that.