04 Selenium获取动态数据

简介

        如今的网站反爬手段层出不穷,不像以前那么简单,网页在后端渲染好数据,再发送给客户端。现在通用的网页技术,前后端分离,前端中通过js函数发送请求向后端请求数据然后在渲染数据,因此,我们要是简单的发送requests请求,最后得到只是一堆js函数

        当然,爬虫中也有相应的破解方法:selenium自动化工具,那就是驱动浏览器去模拟人为地获取数据

安装

1、安装selenium库

pip install selenium

# 上面命令安装失败请用下面命令
pip install selenium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

2、ChromeDriver

2.1、如果Selenium要和Chrome等主流浏览器衔接,则对应的浏览器需要安装驱动

2.2、比如:selenium要和Chrome连接,则需要安装 ChromeDriver 驱动

2.3、在 ChromeDriver Mirror 找与Chrome对应版本的驱动(相近的版本也可以)

 

2.4、下载并解压后,把chromedriver.exe 放到工程目录下

2.5、确保Chrome浏览器进行环境变量设置

使用

1、访问百度首页

百度一下,你就知道

2、编写代码

from selenium import webdriver
from time  import sleep


def Test(url):

    # 创建驱动配置
    option = webdriver.ChromeOptions()
    # 配置后台驱动浏览器
    # option.add_argument('headless')

    # 创建driver驱动对象
    driver = webdriver.Chrome(executable_path='./chromedriver.exe', chrome_options=option)

    # 访问页面
    driver.get(url)

    # 通过标签id,定位输入框,输入搜索值
    driver.find_element_by_id('kw').send_keys('csdn')

    sleep(1)

    # 通过标签id,定位搜索按钮
    driver.find_element_by_id('su').click()

    sleep(5)

    # 截图
    driver.save_screenshot('baidu.png')

    # 获取当前浏览器窗口的网页
    content = driver.page_source

    print(content)


if __name__  == '__main__':
    url = 'https://www.baidu.com/'
    Test(url)

总结

常用的selenium方法

# 通过标签的id值锁定标签(不推荐)
driver.find_element_by_id()

# 通过xpath语法锁定标签
driver.find_element_by_xpath()

# 清空锁定的标签的值
driver.find_element_by_xpath().clear()

# 往锁定的标签中填写值
driver.find_element_by_xpath().send_keys()

# 获取当前驱动的浏览器的Cookies值
driver.get_cookies()

# 获取当前浏览器窗口中的网页(破解动态数据)
driver.page_source

# 截图当前浏览器的窗口
driver.save_screenshot()

# 点击锁定的标签
driver.find_element_by_id().click()

猜你喜欢

转载自blog.csdn.net/m0_55868614/article/details/121266145
04