python提交获取ajax数据,python爬取ajax动态内容

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: