如何用python爬取网页中隐藏的div内容

如何用python爬取网页中隐藏的div内容,第1张

你说的隐藏的div内容,应该是动态加载数据吧,不在网页源码中显示,只在加载网页时才请求数据进行显示,一般情况下,这种数据都保存在一个json文件中,只要抓包分析出这个json文件的url地址,然后再根据json文件结构进行解析,很快就能获取到动态加载的div数据,下面我以爬取人人贷上面的散标数据为例,简单介绍一下python如何爬取div动态加载的数据,实验环境win10+python36+pycharm50,主要步骤如下:

1首先,打开散标数据,如下,爬取的信息主要包括年利率、借款标题、期限、金额和进度这5个字段信息:

右键对应元素进行检查,可以看出所有的数据嵌套在div标签中,如下:

打开网页源码,我们按Ctrl+F查找对应的数据,会发现所查找的数据都未在网页源码中,如下,即数据都是动态加载,所以直接解析原网页是找不到div嵌套的数据的:

2接着,我们按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就会看到动态加载的json文件,查看这个文件,内容如下,左边为json文件的url地址,右边就是我们需要爬取的div数据:

3最后对应上面的json文件,我们就可以直接获取并解析json了,这里主要用到requests和json这2个模块,其中requests用于根据url地址获取json文件,json用于解析json文件,提取出我们所需要的信息,即div动态加载的数据,测试代码如下,非常简单:

运行程序,截图如下,已经成功爬取到div加载的数据:

至此,我们就完成了利用python爬取div动态加载的数据。总的来说,整个过程非常简单,最主要的还是抓包分析,只要你有一定的爬虫基础,熟悉一下上面的代码,多调试几遍程序,很快就能掌握的,当然,你也可以使用selenium进行爬取,直接解析就行,网上也有相关教程和资料可供参考,非常丰富,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。

第一种用jQuery的val方法:

js = "return $('input')val();"

driverexecute_script(js)

第二种用jQuery的attr方法:

js = "return $('input')attr('value');"

driverexecute_script(js)

第三种用selenium自带的方法:

driverfind_element_by_tag_name('input')get_attribute('value')

动态网页抓取 (解析真实地址 + selenium)

由于网易云跟帖停止服务,现在已经在此处中更新了新写的第四章。请参照文章:

前面爬取的网页均为静态网页,这样的网页在浏览器中展示的内容都在HTML源代码中。但是,由于主流网站都使用JavaScript展现网页内容,和静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,所以爬取静态网页的技术可能无法正常使用。因此,我们需要用到动态网页抓取的两种技术:通过浏览器审查元素解析真实网页地址和使用selenium模拟浏览器的方法。

本章首先介绍动态网页的实例,让读者了解什么是动态抓取,然后使用上述两种动态网页抓取技术获取动态网页的数据。

4动态抓取的例子

在开始爬取动态网页前,我们还需要了解一种异步更新技术—AJAX(Asynchronous Javascript And XML,异步JavaScript和XML)。它的价值在于通过在后台与服务器进行少量数据交换就可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下对网页的某部分进行更新。一方面减少了网页重复内容的下载,另一方面节省了流量,因此AJAX得到了广泛使用。

相对于使用AJAX网页而言,传统的网页如果需要更新内容,就必须重载整个网页页面。因此,AJAX使得互联网应用程序更小、更快、更友好。但是,AJAX网页的爬虫过程比较麻烦。

首先,让我们来看动态网页的例子。打开笔者博客的Hello World文章,文章地址为:>

为了验证页面下面的评论是用JavaScript加载的,我们可以查看此网页的网页源代码。如图4-2所示,放置该评论的代码里面并没有评论数据,只有一段JavaScript代码,最后呈现出来的数据就是通过JavaScript提取数据加载到源代码进行呈现的。

除了笔者的博客,还可以在天猫电商网站上找到AJAX技术的例子。例如,打开天猫的iPhone XS Max的产品页面,单击“累计评价”,可以发现上面的url地址没有任何改变,没有重新加载整个网页并对网页的评论部分进行更新,如图4-3所示。

如图4-4所示,我们也可以查看此商品网页的源代码,里面并没有用户评论,这一块内容是空白的。

如果使用AJAX加载的动态网页,怎么爬取里面动态加载的内容呢?有两种方法:

(1)通过浏览器审查元素解析地址。

(2)通过Selenium模拟浏览器抓取。

以上就是关于如何用python爬取网页中隐藏的div内容全部的内容,包括:如何用python爬取网页中隐藏的div内容、Selenium获取input输入框中值的三种方法、selenium官网是动态网页吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9451218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存