爬虫抓取网页数据(利用爬虫爬取网页数据是不是动态生成的时候)

优采云 发布时间: 2021-09-23 23:11

  爬虫抓取网页数据(利用爬虫爬取网页数据是不是动态生成的时候)

  如果使用爬虫爬取网页数据,发现是动态生成的,目前主要表现在以下几种类型:

  以界面的形式生成数据,这种形式其实还蛮好打理的,比较典型的就是知乎的用户信息,只要知道界面的URL,就不需要考虑内容页面本身。

  以知乎 为例。我们在抓取用户信息时,最初可能会关注页面本身的内容,希望通过分析页面的结构来获取想要的数据。事实上,我们使用fiddler等网络工具。很容易发现,里面其实有一个用户信息的接口,所以我们在爬取用户的时候只需要关注这个接口的逻辑就可以了。

  

  如上图所示,上述接口返回了所有用户信息,因此我们可以对结果的json格式数据进行处理。

  动态生成的内容直接写入网页。这时候就需要一个渲染引擎来帮助我们渲染javascript的执行结果。Splash 是我们需要的引擎,它可以帮助我们快速轻松地渲染 javascript 的内容。

  Splash是scrapy推荐的渲染引擎。它可以同时渲染多个页面,为用户返回页面或截图,并在页面中执行自定义的javascript代码。以京东的图书搜索为例。搜索列表中的内容由javascript动态生成。如果我们想要抓取内容,我们需要渲染数据。这可以通过使用飞溅轻松完成。下图是使用splash渲染的代码

  

  总之,对于不同的形式,我们需要先了解相应的实现原理,然后根据实现原理采用相应的方案抓取我们需要的数据。

  你要使用python代码来判断数据是否是动态生成的。这在目前并不容易实现。至于使用python来捕获分析数据,获取数据的Request URL,这个实现起来比较复杂,也没有必要。手动F12很快就能找到答案,数据是否动态一目了然。静态数据在网页源代码中,动态数据不在网页源代码中。将网页显示的内容与网页的源代码进行对比,可以直观的找到。

  1.静态数据如下。

  网页显示内容:

  

  网页源码内容:

  

  如果在网页的源代码中可以找到相应的数据,则不是动态加载的。

  2.动态数据如下。

  网页显示内容:

  

  实际数据如图所示,不在网页源码中,数据是动态加载的:

  

  至于动态数据URL,可以直接抓包分析,实现起来非常简单:

  

  一般情况下数据页的url参数都是有规律可循的,逐页翻页,参数也是固定的那几个参数,如果值是,就*敏*感*词*更改,但有的网站会做加密,你要自己分析。一般情况下,动态数据是一个json文件,可以通过json包或者正则表达式提取数据。希望以上内容对您有所帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线