动态渲染页面爬取

本文介绍了如何使用Selenium工具进行动态渲染页面的爬取,包括模拟浏览器操作、节点交互、动作链、执行JavaScript、获取节点信息、延时等待、Cookies管理、选项卡管理和异常处理等关键步骤,特别适用于处理JavaScript动态加载的内容。
摘要由CSDN通过智能技术生成

所谓动态渲染页面爬取,就是模拟浏览器的运行方式,这样就可以做到在浏览器中看到是什么样,爬取的源码就是什么样,也就是可见即可爬。

Selenium的使用

selenium 是一个自动化测试工具,利用它就可以驱动浏览器执行特定的动作,如点击,下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,对于一些JavaScript动态渲染的页面来说,此种爬取方式非常的有效。

  • 节点交互
    selenium可以驱动浏览器来执行一些操作,也就说可以让浏览器模拟执行一些动作。比较常见的用法有输入文字时用send_keys()方法,清空文字时用clear()方法,点击按钮时用click()方法。
from selenium import wedriver
import time

browser = webdriver.Firefox()
browser = get('https://taobao.com')
input = browers.find_element_by_id('q')
input.send_keys('三星s4')
time.sleep(1)
input.clear()
input.send_keys('ipad')
button = browers.find_element_by_class_name('btn-search')
button.click()

这里首先驱动浏览器打开淘宝,然后用find_element_by_id()放法获取输入框,然后用send_keys()方法少输入文字,等待一秒后用clear()方法清空少输入框,再次调用send_keys()方法输入ipad文字,之后再用find_element_by_class_name()方法获取搜索按钮调用click()方法完成搜索动作。
7.动作链
在上面得实例中,一些交互动作都是针对某个节点执行的。比如输入框我们就调用它的输入文字和清空方法,对于按钮就调用它的点击方法。其实哈有另外的一些操作他们没有特定的执行对象比如鼠标拖拽键盘按键等。
比入实现一个结点的拖拽操作,将某个节点从一处拖拽到另一处。
8.执行javascript
有些操作selenium API并没有提供。比如下啦进入条,他可以直接运行JavaScript此时使用execute_script()方法可以实现,代码如下:

from selenium import webdriver
browers = webdriver.Firefox()
browers.get('https://www.zhihu.com/explore')
browers.execute_script('window.scrollTo(0, document.body.scrollHeight)')
browers.
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值