Comment explorer Ajax en Python

(*-*)浩
Libérer: 2019-07-09 10:28:06
original
5124 Les gens l'ont consulté

Utiliser le package python : requêtes.

Comment explorer Ajax en Python

Méthode spécifique : (apprentissage recommandé : Tutoriel vidéo Python)

La première étape consiste à définir vos propres en-têtes. Notez que le champ User-Agent dans les en-têtes peut être utilisé pour concevoir une liste en fonction de vos propres besoins pour un remplacement aléatoire.

Fonctionnalités des pages Web des données ajax : il existe certaines requêtes ajax dans le flux réseau XHR dans NetWork, parmi lesquelles leur request_url doit être une interface de requête ajax, et le référent dans les en-têtes est l'url avant le saut, et il est construit lui-même. Le champ référent doit être défini dans les en-têtes.

Prenons comme exemple la recherche de "java" sur la page d'accueil de Lagou.com :

Comment explorer Ajax en PythonLe robot de données ajax et le robot d'exploration Web ordinaire ont une URL de plus, l'une est l'URL du référent . Placé dans les en-têtes. L'autre est ajax_url, qui est également l'URL d'accès principale.

Le point le plus important est que ajax renvoie généralement des données json, donc la forme d'analyse des données capturées est différente. Convertissez simplement l'ensemble de résultats en un ensemble de résultats json, et la méthode d'accès est un accès ordinaire par dictionnaire ou par liste.

L'autre est le paramètre d'accès. Si la requête contient un paramètre, elle sera construite. Sinon, ignorez-le. Il y a des paramètres dans cet exemple. Faites attention à la méthode de construction du dictionnaire de paramètres

Un code complet simple est présenté ci-dessous

from urllib.request import quote,unquote
import random
import requests
 
keyword = quote('java').strip()
print(keyword, type(keyword))
city = quote('郑州').strip()
print(unquote(city))
 
refer_url = 'https://www.lagou.com/jobs/list_%s?city=%s&cl=false&fromSearch=true&labelWords=&suginput=' % (keyword, city)
ajax_url = 'https://www.lagou.com/jobs/positionAjax.json?city=%s&needAddtionalResult=false' %city
user_agents=[
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',
]
 
data ={
    'first': 'true',
    'pn': '1',
    'kd': keyword,
}
headers={
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Length': '46',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Host': 'www.lagou.com',
    'Origin': 'https://www.lagou.com',
    'Referer': refer_url,
    'User-Agent': user_agents[random.randrange(0,3)],
    'X-Anit-Forge-Code': '0',
    'X-Anit-Forge-Token': 'None',
    'X-Requested-With': 'XMLHttpRequest',
}
resp = requests.post(ajax_url,data=data, headers=headers)
 
result = resp.json()
print(result)
# print(result)
#result 就是最终获得的json格式数据
item = result['content']['positionResult']['result'][0]
print(item)
#item就是单个招聘条目信息
print("程序结束")
Copier après la connexion

Pour plus d'articles techniques liés à Python, veuillez visiterTutoriel Python Chronique pour apprendre !

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:php.cn
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