Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man Ajax in Python crawlt

Wie man Ajax in Python crawlt

(*-*)浩
(*-*)浩Original
2019-07-01 10:22:035112Durchsuche

Python-Paket verwenden: Anfragen.

Wie man Ajax in Python crawlt

Spezifische Methode: (empfohlenes Lernen: Python-Video-Tutorial)

Der erste Schritt besteht darin, Ihre eigenen Header zu definieren. Beachten Sie, dass Sie das Feld „User-Agent“ in den Headern verwenden können, um eine Liste nach Ihren eigenen Bedürfnissen für die zufällige Ersetzung zu entwerfen.

Webseitenfunktionen von Ajax-Daten: Es gibt einige Ajax-Anfragen im XHR-Netzwerkfluss in NetWork, deren request_url eine Ajax-Anfrageschnittstelle sein muss und der Referrer in den Headern die URL vor dem Sprung ist. und es wird selbst erstellt. Das Referrer-Feld muss in den Headern festgelegt werden.

Nehmen Sie als Beispiel die Suche nach „Java“ auf der Homepage von Lagou.com:

Wie man Ajax in Python crawltDer Ajax-Datencrawler und der gewöhnliche Webcrawler haben eine weitere URL, eine davon ist die Referrer-URL . In Kopfzeilen platziert. Die andere ist ajax_url, die auch die Hauptzugriffs-URL ist.

Der wichtigste Punkt ist, dass Ajax im Allgemeinen JSON-Daten zurückgibt, sodass die Analyseform der erfassten Daten unterschiedlich ist. Konvertieren Sie einfach die Ergebnismenge in eine JSON-Ergebnismenge, und die Zugriffsmethode ist ein gewöhnlicher Wörterbuch- oder Listenzugriff.

Der andere ist der Zugriffsparameter. Wenn die Anfrage einen Parameter enthält, wird er erstellt. Wenn nicht, ignorieren Sie es. In diesem Beispiel gibt es Parameter. Achten Sie auf die Konstruktionsmethode des Parameterwörterbuchs

Ein einfacher vollständiger Code wird unten angezeigt

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("程序结束")

Weitere technische Artikel zu Python finden Sie unterPython-Tutorial Kolumne zum Lernen!

Das obige ist der detaillierte Inhalt vonWie man Ajax in Python crawlt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn