Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Echocage
Last active January 12, 2016 16:01
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Echocage/fa1dfd3874ab36ef5646 to your computer and use it in GitHub Desktop.
Save Echocage/fa1dfd3874ab36ef5646 to your computer and use it in GitHub Desktop.
import urllib
import urllib2
from prettytable import PrettyTable
import BeautifulSoup
def format_data(item):
text = item.text
price, users = text.split('+')
price = price.strip('$').replace(',', '')
users = users.strip('(').strip(')')
return int(price), int(users)
def generate_stats(url):
soup = BeautifulSoup.BeautifulSoup(urllib2.urlopen(url))
response = soup.find(id='SALARY_rbo').findNext()
data = filter(lambda x: x != '\n', response.contents)
return map(format_data, data)
def main():
dev_list = ['Python', 'Java', 'C#', 'C++', 'Ruby', 'PHP', 'HTML5', 'Objective C', 'Android', 'IOS']
base_url = 'http://www.indeed.com/jobs'
display_table = PrettyTable(['Title', '#Jobs', 'Avg.Sal'])
for dev in dev_list:
query = "{dev}".format(dev=urllib.quote(dev))
full_url = '{baseurl}?q={query}'.format(baseurl=base_url, query=query.replace(' ', '+'))
stats = list(generate_stats(full_url))
jobs = [users for price, users in stats]
total = sum(jobs)
salaries = [price * users / total for price, users in stats]
display_table.add_row(["{dev} Developer".format(dev=dev), sum(jobs), sum(salaries)])
print display_table
if __name__ == '__main__':
main()
+-----------------------+--------+---------+
| Title | #Jobs | Avg.Sal |
+-----------------------+--------+---------+
| Python Developer | 95448 | 82562 |
| Java Developer | 203378 | 82673 |
| C# Developer | 88558 | 80501 |
| C++ Developer | 84019 | 82570 |
| Ruby Developer | 44259 | 82842 |
| PHP Developer | 51878 | 64146 |
| HTML5 Developer | 37813 | 81441 |
| Objective C Developer | 47869 | 66358 |
| Android Developer | 49783 | 66979 |
| IOS Developer | 57419 | 74844 |
+-----------------------+--------+---------+
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment