Indeed.com a un élément qui montre le niveau de salaire et le nombre de cas. Utilisez cet élément pour calculer le salaire moyen.
avgsalary.py
import urllib.request, urllib.parse
from bs4 import BeautifulSoup
import re, getopt, sys
import numpy as np
def avgsalary(query, location):
query = urllib.parse.quote_plus(query)
location = urllib.parse.quote_plus(location)
url = "https://jp.indeed.com/%E6%B1%82%E4%BA%BA?q={}&l={}&radius=0".format(query, location)
request = urllib.request.urlopen(url);
soup = BeautifulSoup(request.read(), 'html.parser')
result = soup.find(id="SALARY_rbo")
results = result.find_all("li")
salaries = []
num_salaries = []
for result in results:
tmp = result.a["title"]
tmp = re.sub(',','', tmp)
tmp = re.sub(r'([0-9]+)[^\d]+([0-9]+).*$', r'\1,\2', tmp);
tmp = tmp.split(",")
salaries.append(tmp[0])
num_salaries.append(tmp[1])
salaries = np.array(salaries).astype(np.float)
salaries *= 10000
num_salaries = np.array(num_salaries).astype(np.float)
return(np.sum(salaries * num_salaries)/np.sum(num_salaries))
def main():
try:
opts, args = getopt.getopt(sys.argv[1:],"q:l:", ["query", "location"]);
except getout.GetoptError as err:
#usage()
sys.exit(2)
query = ""
location = ""
for o, a in opts:
if o == "-q":
query = a
elif o == "-l":
location = a
print(avgsalary(query, location))
if __name__ == "__main__":
main()
$ python avgsalary.py -l Gotenba
2312722.94887
Ce code effectue les opérations suivantes:
Par exemple, la comparaison suivante est intéressante.
$ python avgsalary.py -q programmer
4469298.24561
$ python avgsalary.py -q Programmeur
3116876.47306
Cette comparaison signifie généralement la différence de revenu annuel entre «emplois anglais» et «emplois japonais». Étant donné que les emplois anglais ont un revenu annuel plus élevé de plus d'un million, nous pouvons voir à quel point l'anglais est important. D'ailleurs, si vous utilisez la version américaine de Indeed.com, vous pouvez voir que le salaire moyen des programmeurs américains est supérieur à 7 millions de yens.
Recommended Posts