excel抓取网页动态数据(利用selenium的子模块webdriver的html内容解决的问题)

优采云 发布时间: 2021-10-16 10:04

  excel抓取网页动态数据(利用selenium的子模块webdriver的html内容解决的问题)

  文章 目的我们在使用Python抓取网页数据时,经常会用到urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,使用read()方法获取url的html内容,然后用BeautifulSoup抓取一个标签的内容,结合正则表达式过滤。然而,你用 urllib.urlopen(url).read() 得到的只是网页的静态html内容,还有很多动态数据(比如访问量网站,当前在线人数,微博的点赞数等)不收录在静态html中,比如我想抢这个bbs网站

  静态html页面中不收录当前每个版块的在线用户数(如果你不相信我,请尝试查看页面的源代码,只有简单的一行)。此类动态数据更多是由JavaScript、JQuery、PHP等语言动态生成的,因此不宜采用抓取静态html内容的方法。

  解决方法我试过用浏览器自带的开发者工具(一般是F12弹出对应网页的开发者工具),网上说的。查看网络获取动态数据的趋势,但这需要从很多URL中找到。对于线索,我个人认为太麻烦了。另外,查看器查看的html内容也收录动态数据,但是有几个问题:如何实时获取查看器的html内容?如何将查看器的html导入python程序?因此,使用查看器的html内容的方法也不符合爬虫的要求。

  偶然发现了selenium模块,发现这个模块可以很方便的根据url加载页面获取session,找到当前session对应的tag。本文将使用 selenium webdriver 模块来获取这些动态生成的内容,尤其是一些重要的动态数据。事实上,selenium 模块的功能不仅限于抓取网页。它是网络自动化测试的常用模块。它在 Ruby 和 Java 中被广泛使用。Python虽然使用的相对较少,但它也是一个非常简单、高效、易用的自动化测试。模块。通过使用selenium的子模块webdriver解决动态数据的捕获问题,你也可以对selenium有一个基本的了解,为进一步学习自动化测试打下基础。

  我在windows 7系统上安装了Python2.7版本,使用的是Python(X,Y)的IDE。安装的 Python 库不附带 selenium。在 Python 程序中直接导入 selenium。提示没有这个模块。联网状态下,cmd直接进入pip install selenium,系统会找到Python安装目录直接下载解压安装这个模块。终端提示完成后,可以查看C:\Python27\Lib\site-packages目录下是否有selenium模块。这个目录取决于你安装 Python 的路径。如果有 selenium 和 selenium-2.47.3.dist-info 两个文件夹,则可以在 Python 程序中加载模块。

  使用webdriver抓取动态数据1.先导入webdriver子模块

  从硒导入网络驱动程序

  2.获取浏览器会话,浏览器可以使用火狐、Chrome、IE等,这里以火狐为例

  浏览器 = webdriver.Firefox()

  3.加载页面并在URL中指定有效字符串

  browser.get(url)

  4. 获取到session对象后,为了定位元素,webdriver提供了一系列的元素定位方法。常用的方法有以下几种:

  ID

  姓名

  班级名称

  关联

  文本

  部分的

  关联

  文本

  标签

  姓名

  路径

  css选择器

  比如通过id定位,返回一个所有元素组成的列表,lis=borwser.find_elements_by_id_name('kw'')

  按类名定位,lis=find_elements_by_class_name('title_1')

  更详细的定位方法请参考《博客园-虫师》大神的selenium webdriver(python)教程第三章——定位方法(第一版可百度文库阅读,第二版从一开始就收费>-

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线