python怎么爬取ajax?运用python的requests包来实现

本篇文章小编给大家分享一个使用python的requests包来爬取ajax的方法,感兴趣的小伙伴可以耐心阅读一下这篇文章,小编也把完整的代码分享出来了,大家也可以参考参考 。

python怎么爬取ajax?运用python的requests包来实现

文章插图
使用python的requests包来爬取ajax的具体方法如下:
首先,我们需要定义一下自己的headers,不过值得我们注意到是,有一个字段需要我们根据自己的需求来设计一个列表用于随机调换,就是User-Agent 。
我们再来了解一下一半ajax网页的特点:一般在network中xhr网络中有一些ajax请求,其中它们request_url必然是ajax的请求接口,并且headers里面的referer是跳转前的url 。
而且ajax数据的抓取爬虫和普通的网页爬取多了一个url,一个是referer的url,放在headers中,另外一个则是ajax_url 。这也是一个主要访问的 。
【python怎么爬取ajax?运用python的requests包来实现】不过最重要的一点还是ajax一般返回json数据,所以我们抓取下来的数据解析形式有所不同 。我们可以直接将集转换成json结束集就好了 。
另外一个就是访问参数,若请求中带有param,就将其构造 。若没有可忽略 。本例中有参数,注意参数字典构造方法
下面小编就给大家分享一个完整的代码:
from urllib.request import quote,unquoteimport randomimport 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' %cityuser_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=https://www.ycpai.cn/python/data, headers=headers) result = resp.json()print(result)# print(result)#result 就是**终获得的json格式数据item = result['content']['positionResult']['result'][0]print(item)#item就是单个招聘条目信息print("程序结束")

推荐阅读