当前位置: 首页 > Python编程 > Python编程实战技能 > Python编程学习教程 > python怎么爬取ajax

python怎么爬取ajax

发布时间:2020年11月21日 21:29:24 来源:环球青藤 点击量:7

【摘要】使用python包:requests。具体方法:(推荐学习:Python视频教程)首先是定义自己headers,注意headers里面的User-Agent这一字段可以根据自

使用python包:requests。

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

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

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

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

ajax数据的抓取爬虫和普通的网页爬取多了一个url,一个是referer的url,放置于headers中。另外一个就是ajax_url,这个也是主要访问url。

最重要的一点,ajax一般返回json数据,所以抓取下来的数据解析形式有所不同。直接将结果集转换成json结果集即可,访问方式就是普通字典、列表访问形式。

另外一个就是访问参数,若请求中带有param,就将其构造。若没有可忽略。本例中有参数,注意参数字典构造方法

下面就展示出来一个简单的完整代码

from urlpb.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/pst_%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, pke Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, pke Gecko) Chrome/65.0.3325.181 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, pke Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',
]
 
data ={
    'first': 'true',
    'pn': '1',
    'kd': keyword,
}
headers={
    'Accept': 'apppcation/json, text/javascript, */*; q=0.01',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-apve',
    'Content-Length': '46',
    'Content-Type': 'apppcation/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的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部