[PYTHON] Obtenez le salaire moyen d'un emploi avec des conditions spécifiées sur Indeed.com

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.

code

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()

Courir

$ python avgsalary.py -l Gotenba
2312722.94887

La description

Ce code effectue les opérations suivantes:

  1. Obtenez le salaire et le nombre de cas en utilisant Beautiful Soup.
  2. Stockez le salaire et le nombre dans le tableau numpy.
  3. Calculez la moyenne. La production est le revenu annuel.

Exemple spécifique

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

Obtenez le salaire moyen d'un emploi avec des conditions spécifiées sur Indeed.com
Un script python qui obtient le nombre de travaux pour une condition spécifiée sur Indeed.com
Obtenez l'identifiant d'un GPU avec une faible utilisation de la mémoire
Obtenez UNIXTIME au début d'aujourd'hui avec une commande
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
Obtenir l'URL du ticket JIRA créé par la bibliothèque jira-python
Astuces: [Python] Calculez la valeur moyenne de la zone spécifiée avec bedgraph
Obtenez les conditions de simulation OCTA à partir d'un fichier et enregistrez avec les pandas
Obtenez le dernier jour du mois spécifié
Obtenez le nom de fichier du répertoire (glob)
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
Obtenir la liste des packages de l'utilisateur spécifié à partir des packages enregistrés dans PyPI
Récupérer le contenu de git diff depuis python
Récupérer l'appelant d'une fonction en Python
Obtenir une liste d'utilisateurs IAM avec Boto3
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Je veux un bot Slack qui calcule et me dit le salaire d'un emploi à temps partiel à partir du calendrier de Google Agenda!
Obtenez le nième plus petit nombre du tableau avec O (logN) en utilisant une arborescence de segments
Obtenez le nom de la variable sous forme de chaîne de caractères.
Calculer le volume à partir de la structure bidimensionnelle d'un composé
Apprenez Nim avec Python (dès le début de l'année).
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Calculez la valeur totale de plusieurs colonnes avec awk
Prenez des captures d'écran LCD avec Python-LEGO Mindstorms
Récupérer le code retour d'un script Python depuis bat
Points Python du point de vue d'un programmeur en langage C
Essayez d'obtenir le contenu de Word avec Golang
Visualisez le vocabulaire caractéristique d'un document avec D3.js
Obtenez l'état de fonctionnement de JR West avec Python
Calculer le produit des matrices avec une expression de caractère?
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
Un diagramme de réseau a été créé avec les données du COVID-19.
Mesurer l'importance des entités avec un outil de forêt aléatoire
Accédez au fichier avec un chemin relatif à partir du script d'exécution.
Différent du type d'importation de python. Signification de depuis A import B
Obtenez la version du package pour vous inscrire à PyPI à partir de Git
L'histoire du champ de modèle Django disparaissant de la classe
Obtenez le nombre d'éléments spécifiques dans la liste python
Obtenez une liste des livres électroniques DMM achetés avec Python + Selenium
Créer un diagramme de corrélation à partir de l'historique des conversations de Twitter
Comment obtenir une liste de liens à partir d'une page de wikipedia
Analysez le modèle thématique pour devenir romancier avec GensimPy3
Fabriquez un thermomètre BLE et obtenez la température avec Pythonista3
L'histoire de la création d'un bot de boîte à questions avec discord.py
Obtenez le nom d'hôte du PC hôte avec Docker sous Linux
Récupérez la source de la page à charger indéfiniment avec python.
Une histoire sur la prédiction des préfectures à partir des noms de villes avec Jubatus
Traitez le contenu du fichier dans l'ordre avec un script shell
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Une formule qui calcule simplement l'âge à partir de la date de naissance