首頁 > 後端開發 > Python教學 > python怎麼爬取ajax

python怎麼爬取ajax

(*-*)浩
發布: 2019-07-09 10:28:06
原創
5288 人瀏覽過

使用python套件:requests。

python怎麼爬取ajax

具體方法:(推薦學習:Python影片教學

首先是定義自己headers,注意headers裡面的User-Agent這一字段可以根據自己需求設計一個列表,用於隨機調換。

ajax資料的網頁特點:NetWork中的XHR網絡流中有一些ajax請求,其中它們request_url必定是一個ajax請求接口,並且headers裡面的referer是其跳轉前的url,在構造自己的headers的時候需要設定referer欄位。

以拉勾網首頁搜尋「java」為例:

python怎麼爬取ajaxajax資料的抓取爬蟲和普通的網頁爬取多了一個url,一個是referer的url,放置於headers。另外一個就是ajax_url,這個也是主要訪問url。

最重要的一點,ajax一般會回傳json數據,所以抓取下來的數據解析形式有所不同。直接將結果集轉換成json結果集即可,存取方式就是一般字典、清單存取形式。

另外一個就是存取參數,若請求中帶有param,就將其建構。若沒有可忽略。本例有參數,注意參數字典建構方法

下面就展示出來一個簡單的完整程式碼

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

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

登入後複製

更多Python相關技術文章,請造訪Python教學欄位進行學習!

以上是python怎麼爬取ajax的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板