Maison  >  Article  >  développement back-end  >  Comment utiliser Python pour implémenter des rapports d'analyse de tâches

Comment utiliser Python pour implémenter des rapports d'analyse de tâches

WBOY
WBOYavant
2023-05-01 22:07:221192parcourir

1. L'objectif de cet article

Obtenez la requête Ajax et analysez les champs requis dans JSON

Enregistrez les données dans Excel

Enregistrez les données dans MySQL pour une analyse facile

2. Résultats de l'analyse

1. bibliothèque

Cinq villes Niveau de salaire moyen des postes Python

2. Structure de la page

Nous saisissons les conditions de requête en utilisant Python comme exemple. Les autres conditions ne sont pas sélectionnées par défaut et vous verrez tous les postes Python. ouvrez la console et cliquez sur l'onglet Réseau. Vous pouvez voir la demande suivante :

Comment utiliser Python pour implémenter des rapports danalyse de tâches

À en juger par les résultats de la réponse, cette demande est exactement ce dont nous avons besoin. Nous pourrons simplement demander cette adresse directement plus tard. Comme le montre l'image, le résultat suivant est l'information de chaque position.

Nous savons désormais où demander des données et où obtenir les résultats. Mais il n'y a que 15 données sur la première page de la liste de résultats. Comment obtenir les données sur d'autres pages ?

3. Paramètres de la demande

Nous cliquons sur l'onglet paramètres, comme suit :

Nous avons constaté que trois données de formulaire ont été soumises. Il est évident que kd est le mot-clé que nous avons recherché et pn est le numéro de page actuel. Par défaut, ne vous inquiétez pas. Il ne reste plus qu'à construire une requête pour télécharger 30 pages de données.

4. Construire une requête et analyser les données

Construire une requête est très simple, nous utilisons toujours la bibliothèque de requêtes pour le faire. Tout d'abord, nous construisons les données du formulaire

data = {'first': 'true', 'pn': page, 'kd': lang_name}

, puis utilisons des requêtes pour demander l'adresse URL. Les données JSON analysées sont terminées. Étant donné que Lagou a des restrictions strictes sur les robots d'exploration, nous devons ajouter tous les champs d'en-tête dans le navigateur et augmenter l'intervalle des robots d'exploration. Je l'ai défini à 10 à 20 secondes plus tard, puis les données peuvent être obtenues normalement.

import requests

def get_json(url, page, lang_name):
   headers = {
       'Host': 'www.lagou.com',
       'Connection': 'keep-alive',
       'Content-Length': '23',
       'Origin': 'https://www.lagou.com',
       'X-Anit-Forge-Code': '0',
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0',
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
       'Accept': 'application/json, text/javascript, */*; q=0.01',
       'X-Requested-With': 'XMLHttpRequest',
       'X-Anit-Forge-Token': 'None',
       'Referer': 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=',
       'Accept-Encoding': 'gzip, deflate, br',
       'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7'
   }
   data = {'first': 'false', 'pn': page, 'kd': lang_name}
   json = requests.post(url, data, headers=headers).json()
   list_con = json['content']['positionResult']['result']
   info_list = []
   for i in list_con:
       info = []
       info.append(i.get('companyShortName', '无'))
       info.append(i.get('companyFullName', '无'))
       info.append(i.get('industryField', '无'))
       info.append(i.get('companySize', '无'))
       info.append(i.get('salary', '无'))
       info.append(i.get('city', '无'))
       info.append(i.get('education', '无'))
       info_list.append(info)
   return info_list

4. Obtenez toutes les données

Maintenant que nous comprenons comment analyser les données, il ne reste plus qu'à demander toutes les pages en continu. Nous construisons une fonction pour demander les 30 pages de données.

def main():
   lang_name = 'python'
   wb = Workbook()
   conn = get_conn()
   for i in ['北京', '上海', '广州', '深圳', '杭州']:
       page = 1
       ws1 = wb.active
       ws1.title = lang_name
       url = 'https://www.lagou.com/jobs/positionAjax.json?city={}&needAddtionalResult=false'.format(i)
       while page < 31:
           info = get_json(url, page, lang_name)
           page += 1
           import time
           a = random.randint(10, 20)
           time.sleep(a)
           for row in info:
               insert(conn, tuple(row))
               ws1.append(row)
   conn.close()
   wb.save(&#39;{}职位信息.xlsx&#39;.format(lang_name))

if __name__ == &#39;__main__&#39;:
   main()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer