c爬虫抓取网页数据( 如何找出发送请求的js在控制数据的生成,我根本无法找到是哪一个js实现的 )

优采云 发布时间: 2022-04-07 14:27

  c爬虫抓取网页数据(

如何找出发送请求的js在控制数据的生成,我根本无法找到是哪一个js实现的

)

  

  

  

  有很多页。当我们使用request发送请求时,返回的内容中没有页面显示数据。主要有两种情况。一种是通过ajax异步发送请求,得到响应并把数据放入页面。对于这种情况,我们可以查看ajax请求,然后分析ajax请求路径和响应,得到想要的数据;另一种是js动态加载的数据,然后放到页面中。在这两种情况下,用户在通过浏览器访问时都不会发现任何异常,并且会很快得到完整的页面。

  其实我们之前学过一个selenium模块。通过操作浏览器,然后获取浏览器显示的数据,我们可以通过这种方式获取数据,但是本节是分析如何找到控制数据生成的js。以及js发送请求的路径,这样我们就可以向这个路径发送请求,直接获取数据。

  在之前的爬取过程中,最困扰我的是js动态生成的数据。我找不到哪个js实现了它(因为js太多了)。今天看了大佬的博客,顿时觉得简单多了。,谢谢大佬提供大佬的博客:

  一、需求描述及页面分析一、需求描述

  基本页面路径:

  

  点击进入每个标题:

  

  要求是爬取每个标题下的新闻内容

  2.页面分析

  2.1 主页

  

  查看ajax请求:

  

  接下来,我们将解析如何找出发送请求的js

  二、找到发送请求的js

  

  在响应数据中收录了这条新闻的新闻标题和详情页路径,所以现在我们去访问详情页,分析详情页

  

  访问详情页,查看详情页的响应,数据中不收录具体数据,则和主页面一样,然后去ajax:

  

  Ajax 没有与新闻相关的数据,因此它不使用 ajax 请求来获取数据。只剩下js了。我们会找出是哪个js发送了请求来获取数据。步骤与上面相同:

  

  详情页数据的js请求路径:

  

  详情页请求路径:

  

  我们可以看到,最后一个斜杠之前的详情页数据的请求路径和最后一个斜杠之前的详情页的请求路径是一样的。所以我们可以这样做:

  第一步:拿到详情页的请求路径:

url1='https://www.xuexi.cn/1ed1e76f885a3c19576e495ad2b279e5/e43e220633a65f9b6d8b53712cba9caa.html'

第二步:把url1最后一个斜杠后面的内容替换掉

url2='https://www.xuexi.cn/%s/datae43e220633a65f9b6d8b53712cba9caa.js'%(url1.split('/')[3]) #把url1用‘/’分割,拿到第四部分,即索引为3,然后拼接进去既可

这样就构造好了一个详情页数据请求路径,然后直接去访问这个路径既可拿到数据,就不用去访问详情页了

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线