python怎么爬取ajax


本文摘自php中文网,作者(*-*)浩,侵删。

使用python包:requests。

具体方法:(推荐学习:Python视频教程)

首先是定义自己headers,注意headers里面的User-Agent这一字段可以根据自己需求设计一个列表,用于随机调换。

ajax数据的网页特点:NetWork中的XHR网络流中有一些ajax请求,其中它们request_url必定是一个ajax请求接口,并且headers里面的referer是其跳转前的url,在构造自己的headers的时候需要设置referer字段。

以拉勾网主页搜索“java”为例:

python-21.pngajax数据的抓取爬虫和普通的网页爬取多了一个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的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

redis缓存系统的介绍

Python压缩与解压缩zip文件的实现方法

Python怎么新建文件夹

Python如何判断字符串类型

Python 中类的静态变量怎么理解

Python怎么在列表尾部添加元素

Python使用正则表达式过滤或替换html标签方法介绍

开启Python取经之路-class-6(part 1)

Python3是什么

Python如何垂直输出

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...