python – Anfragen zum Crawlen von [Dajie.com]-Jobinformationen verwenden, aber viele Male fehlgeschlagen. Können Sie mir helfen, herauszufinden, was mit meinem Code nicht stimmt? Wie soll es geändert werden?
大家讲道理
大家讲道理 2017-05-18 11:01:06
0
1
2077

Ich habe schon mehrere statische Website-Daten gecrawlt und es war relativ reibungslos. Dieses Mal bin ich auf Ajax gestoßen und habe ein paar Dokumente gelesen. Ich hatte das Gefühl, dass es nicht schwierig war, also habe ich sofort angefangen, aber ich blieb trotzdem hängen. . .

Ziel:
Crawl-Jobinformationen von Dajie.com.

Prozess:
1. Verwenden Sie die Browser-Inspektionselementfunktion, um die Adressinformationen dynamisch geladener Daten anzuzeigen.

2. Konfigurieren Sie die Anforderungsparameter der Anforderungen entsprechend den angezeigten Informationen.

data = { 'keyword': 'python', 'order': '0', 'city': '', 'recruitType': '', 'salary': '', 'experience': '', 'page': '5', 'positionFunction': '', '_CSRFToken': '', 'ajax': '1' } headers = { 'accept': 'application/json, text/javascript, */*; q=0.01', 'accept-language': 'zh-CN,zh;q=0.8', 'accept-encoding': 'gzip, deflate, sdch', 'cookie': 'DJ_UVID=MTQ5MDMyMTExNTAzODM2MTc5; DJ_RF=empty; DJ_EU=http%3A%2F%2Fjob.dajie.com%2F; __login_tips=1; dj_cap=9c8c95bdef72e84a9bd7493a5ab91694; USER_ACTION="request^A-^A-^Ajobdetail:^A-"; SO_COOKIE_V2=0c7cGprjIH0q9RHc53CWLLXf151DQ5QvUP5ccPQj4g0B/izuXHm8sp41lJjJJh3nmjAkroj8JczFN/SCLPAUzbOHW7wYWmQ6Zu7s', 'referer': 'https://so.dajie.com/job/search?keyword=%E9%A3%9E%E5%88%A9%E6%B5%A6&from=job&clicktype=blank', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', 'method':'get' }

3. Fügen Sie Request-Header-Informationen zu „requests.get()“ hinzu.

response = requests.get('https://so.dajie.com/job/ajax/search/filter', params=data, headers=headers)

4. Sehen Sie sich die zurückgegebenen Seiteninformationen an.

print response.url print '' print response.request.headers print '' print response.headers print '' print response.content[-1000:] print '' print response

5. Warum entspricht das zurückgegebene Ergebnis nicht den erwarteten JSON-Daten? . .

response.url: https://so.dajie.com/job/ajax/search/filter?salary=&city=&ajax=1&positionFunction=&_CSRFToken=&keyword=python&recruitType=&order=0&experience=&page=5 response.request.headers: {'accept-language': 'zh-CN,zh;q=0.8', 'accept-encoding': 'gzip, deflate, sdch', 'X-Requested-With': 'XMLHttpRequest', 'accept': 'application/json, text/javascript, */*; q=0.01', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36', 'Connection': 'keep-alive', 'referer': 'https://so.dajie.com/job/search?keyword=%E9%A3%9E%E5%88%A9%E6%B5%A6&from=job&clicktype=blank', 'cookie': 'DJ_UVID=MTQ5MDMyMTExNTAzODM2MTc5; DJ_RF=empty; DJ_EU=http%3A%2F%2Fjob.dajie.com%2F; __login_tips=1; dj_cap=9c8c95bdef72e84a9bd7493a5ab91694; USER_ACTION="request^A-^A-^Ajobdetail:^A-"; SO_COOKIE_V2=0c7cGprjIH0q9RHc53CWLLXf151DQ5QvUP5ccPQj4g0B/izuXHm8sp41lJjJJh3nmjAkroj8JczFN/SCLPAUzbOHW7wYWmQ6Zu7s', 'method': 'get'} response.headers: {'Date': 'Wed, 19 Apr 2017 02:00:47 GMT', 'Content-Length': '5944', 'ETag': '"552f21de-1738"', 'Content-Type': 'text/html; charset=UTF-8', 'Connection': 'keep-alive'} response.content[-1000:]: ,这个页面去火星了,试试搜索一下吧:

逛逛大街 报告管理员

response:

Fragen:
1. „https://so.dajie.com/job/ajax...“, warum öffnet diese Seite keine JSON-Datenseite? Der Link in dem Tutorial, das ich mir zuvor angesehen habe, öffnet die Datenmenge, zum Beispiel: „https://rate.tmall.com/list_d...“.
2. Dies ist das erste Mal, dass ich Anfragen zum Anfordern von Ajax-Daten verwende. Gibt es beim Anfordern noch etwas zu schreiben?
2. Ich habe gerade versucht, verschiedene Anforderungsparameter zu ändern, aber ich kann die JSON-Daten immer noch nicht abrufen. Ist mein Denken in die falsche Richtung?

Vielen Dank.

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

Antworte allen (1)
黄舟
# coding: utf-8 import requests url = 'https://so.dajie.com/job/search' page_url = 'https://so.dajie.com/job/ajax/search/filter?keyword=python&order=0&city=&recruitType=&salary=&experience=&page=1&positionFunction=&_CSRFToken=&ajax=1' session = requests.Session() session.headers['referer'] = url session.headers['user-agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' session.get(url) r = session.get(page_url) print r.text

直接传入cookies

# coding: utf-8 import requests data = { 'keyword': 'python', 'order': '0', 'city': '', 'recruitType': '', 'salary': '', 'experience': '', 'page': '5', 'positionFunction': '', '_CSRFToken': '', 'ajax': '1' } headers = { 'cookie': 'DJ_RF=empty; DJ_EU=http%3A%2F%2Fso.dajie.com%2Fjob%2Fsearch%3Fkeyword%3Dpython%26jobsearch%3D8; DJ_UVID=MTQ5MjU2OTgxOTU1ODg0Mzk1; __login_tips=1; dj_cap=1e41c3c0ca9602c45e6481cb53c19774; SO_COOKIE_V2=6a297gxq5vDDnl9D4q04fhTgrWB11xG9lMj7iLcnP1uM/Zuzzx1dkeHauV4blsO1KsRYQKEQDrDGdiAhRE9efdI8PnREZK1MhzR4', 'referer': 'https://so.dajie.com/job/search', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' } r = requests.get('https://so.dajie.com/job/ajax/search/filter', data=data, headers=headers) print r.text
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!