爬虫初阶(五)—— 动态HTML与selenium

1. 动态HTML

  • 什么是动态HTML

2. Selenium

  • Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。

2.1 selenium 安装

  • 使用selenium需要安装两部分内容,一部分是selenium库,另一部分是浏览器驱动(以Chrome为例)。
    • selenium库可以通过pip直接安装:pip install selenium
    • Chrome的浏览器驱动为chromedriver,其安装要与Chrome的版本一致。
    1. 首先在Chrome浏览器地址栏输入chrome://version/ 查看浏览器版本。
    2. 在以下地址中下载对应版本和对应操作系统chromedriver
      http://chromedriver.storage.googleapis.com/index.html
      https://npm.taobao.org/mirrors/chromedriver/
      在这里插入图片描述
    3. 配置环境变量
      将下载好的压缩包解压,放到自定义文件夹中,并将文件夹添加进环境变量。
    4. 若未配置环境,则在使用时指定路径即可(下文会详细说明)。

2.2 selenium 基本使用

import time
from selenium import webdriver

# 实例化一个浏览器,模拟打开
# 未配置环境变量
# chromedriver = r"D:\Chromedriver\chromedriver"
# driver = webdriver.Chrome(chromedriver)
# 已配置环境变量
driver = webdriver.Chrome()

# 设置窗口大小
# driver.set_window_size(1920, 1080)
driver.maximize_window()  # 最大化

# 发送请求
driver.get('https://www.baidu.com/')

# 元素定位方法
driver.find_element_by_id('kw').send_keys('python')
driver.find_element_by_id('su').click()

# 等待加载完毕
time.sleep(3)
f = driver.find_element_by_xpath("//*[@id='1']//a").get_attribute("href")
print(f)
# 获取html字符串
# print(driver.page_source)

# 获取cookie
cookies = driver.get_cookies()
cookie_dict = {i['name']:i['value'] for i in cookies}
print(cookie_dict)

# 获取当前url地址
url = driver.current_url
print(url)

# 进行页面截屏
time.sleep(3)
driver.save_screenshot('./python.png')

# 关闭当前窗口
driver.close()
# 退出
driver.quit()

2.3 selenium 常用页面元素定位方法

  • 用法:
    find_element_by_id (返回一个)
    find_elements_by_xpath (返回一个列表)
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_tag_name
    find_elements_by_class_name
    find_elements_by_css_selector
  • 注意点:
    find_element 和find_elements的区别:返回一个和返回一个列表
    by_link_text和by_partial_link_text的区别:全部文本和包含某个文本
    by_css_selector的用法: #food span.dairy.aged
    by_xpath中获取属性和文本需要使用get_attribute() 和.text
发布了51 篇原创文章 · 获赞 4 · 访问量 3512

猜你喜欢

转载自blog.csdn.net/yhhuang17/article/details/102911163