Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie Python zum Implementieren von Jobanalyseberichten

So verwenden Sie Python zum Implementieren von Jobanalyseberichten

WBOY
WBOYnach vorne
2023-05-01 22:07:221266Durchsuche

1. Das Ziel dieses Artikels

Erhalten Sie die Ajax-Anfrage und analysieren Sie die erforderlichen Felder in JSON

Speichern Sie die Daten in Excel

#🎜🎜 #Speichern Sie die Daten zur bequemen Analyse in MySQL in fünf Städten

#🎜 🎜#2. Seitenstruktur

Andere Bedingungen sind standardmäßig nicht ausgewählt und Sie sehen alle Python Dann öffnen wir die Konsole und klicken auf Netzwerk. Die folgende Anfrage ist im Tag zu sehen:

Den Antwortergebnissen nach zu urteilen, ist diese Anfrage genau was wir brauchen. Wir können diese Adresse einfach später direkt anfordern. Wie aus dem Bild ersichtlich ist, handelt es sich bei dem folgenden Ergebnis um die Informationen zu jeder Position.

Hier wissen wir, wo wir Daten anfordern und wo wir die Ergebnisse erhalten. Auf der ersten Seite der Ergebnisliste befinden sich jedoch nur 15 Daten. Wie erhält man die Daten auf anderen Seiten?

3. Parameter anfordern

So verwenden Sie Python zum Implementieren von JobanalyseberichtenWir klicken auf die Registerkarte „Parameter“ wie folgt:

Es wurde festgestellt, dass drei Formulardaten übermittelt wurden, und Es ist offensichtlich, dass kd das Schlüsselwort ist, nach dem wir gesucht haben, pn ist die aktuelle Seitenzahl. Stellen Sie einfach die Standardeinstellung ein, machen Sie sich darüber keine Sorgen. Jetzt müssen Sie nur noch eine Anfrage zum Herunterladen von 30 Seiten mit Daten erstellen.

4. Erstellen Sie eine Anfrage und analysieren Sie die Daten

Das Erstellen einer Anfrage ist sehr einfach, wir verwenden dazu immer noch die Anfragebibliothek. Zuerst erstellen wir die Formulardaten

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

und verwenden dann Anfragen, um die URL-Adresse anzufordern. Die analysierten JSON-Daten sind fertig. Da Lagou strenge Einschränkungen für Crawler hat, müssen wir alle Header-Felder im Browser hinzufügen und das Crawler-Intervall später auf 10 bis 20 Sekunden einstellen, damit die Daten normal abgerufen werden können.

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. Alle Daten abrufen

Nachdem wir nun verstanden haben, wie die Daten analysiert werden, müssen wir nur noch alle Seiten kontinuierlich anfordern 30 Seiten Daten.

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

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python zum Implementieren von Jobanalyseberichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen