python提交获取ajax数据,python爬取ajax动态内容
1:网址http://125.35.6.84:81/xk/
2.想了解以下详细信息:
3.分析Ajax请求
首先,确认是否请求当前URL来获取主页信息。如果得到首页信息,就会得到相应企业名称的超链接。如果得到超链接,就可以得到相应的详细信息。
您可以通过向当前URL发送请求来进行验证。(笨办法)
也可以通过数据包捕获工具进行验证。是的,判断Ajax请求。
检查对当前URL请求的响应。
通过包抓取工具【快捷键Ctrl F】搜索对应的企业名称,发现没有(0/0),那么这个URL请求的响应信息中不包含详细信息。
从而确定主页信息是动态加载的数据。
分析AJAX
查看响应信息
是一个json字符串,可以用json验证工具验证。
在此插入图片描述。
该发现响应信息是第一页的数据信息。(所以确认它是一个AJAX请求)
但是这个json字符串中没有详细数据的URL,所以无法进行请求,需要继续分析。
分析两个详细页面的URL
http://125 . 35 . 6 . 84:81/xk/itownet/portal/dzpz . JSP?id=ff 83 aff 95 c 5541 cdab 5 ca 6e 847514 f 88
http://125 . 35 . 6 . 84:81/xk/itownet/portal/dzpz . JSP?id=827d 2943 f 8734 d5c 848336066 c 97 d2b 6
找到的网址:3358125 . 35 . 6 . 84:81/xk/itownet/portal/dzpz . JSP?相同的域名
参数不一样,id是对应企业的ID,发现和上面json字符串中的ID一样。
因此,可以从主页对应的Ajax请求的json字符串中获取ID值。
并且可以将域名和ID值拼接在一起,形成相应企业的详细数据的完整URL。
但是我们需要分析详情页的数据是不是动态加载的数据。
来验证。
验证此详细页面信息也是动态加载的数据。
再次分析Ajax请求
分析它的URL和参数
响应数据是json格式的,json字符串经过格式化和验证。
这被确认为详细页的详细数据。我刚刚获得了这个Ajax请求的URL,可以向它发送一个请求。
分析两个独立详细页面的Ajax请求的URL
http://125 . 35 . 6 . 84:81/xk/itownet/portal action . do?method=getXkzsById
http://125 . 35 . 6 . 84:81/xk/itownet/portal action . do?method=getXkzsById
发现所有post请求的URL和ID都相同。
如果可以批量获取多个企业的ID,就可以拼接起来形成企业明细对应的Ajax请求的URL。
提示(字典快速匹配引号)
1.在浏览器中将请求头复制到pycharm的py文件中。
建议使用Chorme的浏览器进行复制。
2.使用快捷键:Ctrl R调出常规匹配工具栏。
三。按照下面显示的步骤操作:
选择需要快速引号的区域。
填写正则匹配表达式,
(.*?): (.*)$1:$2 ,选中三个选项进行替换。
执行结果如下:
代码如下:导入请求导入json#UA伪装headers={ User-Agent : Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70。0 .3538 .25 Safari/537.36 Core/1。70 .3741 .400 QQ浏览器/10。5 .3863 .400 } #指定URL#批量获取不同企业的身份值(ctrl r正则匹配工具栏)URL= http://125。35 .6 .84:81/xk/itownet/portal操作。做什么?method=getXkzsListid_list=[]#存储企业的IDall_detal_json=[]#存储所有企业的详情数据#分页处理(获取前6页)对于范围(1,6)中的页面:page=str(page) data={#数据处理on:true , page:page,#页码页面大小: 15 ,#数据量productName : , conditionType:1 , applyname : , applysn : ,} #发起请求和获取响应数据json_ids=requests.post(url=url,data=data,headers=headers).JSON _ ids[ list ]:ID _ list。追加(DIC[ ID ])#打印(ID _ list)#获取企业详情数据#指定URL post _ URL= http://125。35 .6 .84:81/xk/itownet/portal操作。做什么?method=getXkzsById#处理参数对于id _列表中的id:data={ id :id } #发起请求,获取响应数据detal _ JSON=请求。post(URL=post _ URL,data=data).json() # print(detal_json,-ending-)all _ detal _ JSON。追加(detal _ JSON)#持久化存储all_detal_jsonfp=open( ./alldetal,json , w ,encoding= utf-8 )JSON。dump(all _ detal _ JSON,fp=fp,assure _ ascii=False)print( Over!)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。