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

WBOY
Libérer: 2023-05-01 22:07:22
avant
1239 Les gens l'ont consulté

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}
Copier après la connexion

, 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
Copier après la connexion

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()
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!