爬虫抓取网页数据( 大佬的博客,和JS发送请求的路径和路径分析)
优采云 发布时间: 2022-03-17 20:17爬虫抓取网页数据(
大佬的博客,和JS发送请求的路径和路径分析)
爬虫爬取JS生成的数据
有很多页。当我们使用request发送请求时,返回的内容中没有页面显示数据。主要有两种情况。一种是通过Ajax异步发送请求,得到响应,将数据放入页面。对于这种情况,我们可以查看Ajax请求,然后分析Ajax请求路径和响应,得到想要的数据;另一种是JS动态加载的数据,然后放到页面中。在这两种情况下,供用户使用浏览器访问时,不会出现异常,快速获取完整页面。
其实我们之前学过一个selenium模块,通过操作浏览器,然后获取浏览器显示的数据,这个方法可以获取数据,不过本节是分析如何找到控制数据生成的JS ,以及JS发送请求的路径,所以我们可以向这个路径发送请求,直接获取数据。
在之前的爬取过程中,最让我恼火的是JS动态生成的数据。我找不到哪个 JS 实现了它(因为 JS 太多了)。今天看了大佬的博客,顿时觉得简单多了。,谢谢大佬,提供大佬的博客:
1.需求描述和页面分析
1、需求说明
基本页面路径:
点击进入每个标题:
要求是爬取每个标题下的新闻内容
2、页面分析
2.1 主页
查看 Ajax 请求:
接下来,我们将解析如何找出发送请求的 JS
二、找到发送请求的JS
在响应数据中,包括新闻标题,以及这条新闻详情页的路径,所以现在我们去访问详情页,分析详情页
访问详情页,查看详情页的响应,数据中不收录具体数据,则和主页面一样,然后去Ajax:
Ajax没有新闻相关的数据,所以不再使用Ajax请求获取数据,只剩下JS了。我们将找出是哪个 JS 发送了获取数据的请求。步骤与上面相同:
详情页数据的JS请求路径:
详情页请求路径:
我们可以看到,最后一个斜杠之前的详情页数据的请求路径与最后一个斜杠之前的详情页的请求路径是一样的。所以我们可以这样做:
第一步:获取详情页的请求路径:
url1=''
第二步:替换url1最后一个斜杠后的内容
url2=''%(url1.split('/')[3]) #用'/'分割url1,得到第四部分,即索引为3,然后拼接进去
这样就构建了一条详情页数据请求路径,然后就可以直接访问该路径获取数据,而无需访问详情页。