1. 动态HTML
- 什么是动态HTML
2. Selenium
- Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。
2.1 selenium 安装
- 使用selenium需要安装两部分内容,一部分是selenium库,另一部分是浏览器驱动(以Chrome为例)。
- selenium库可以通过pip直接安装:
pip install selenium
- Chrome的浏览器驱动为chromedriver,其安装要与Chrome的版本一致。
- 首先在Chrome浏览器地址栏输入
chrome://version/
查看浏览器版本。
- 在以下地址中下载对应版本和对应操作系统chromedriver
http://chromedriver.storage.googleapis.com/index.html
https://npm.taobao.org/mirrors/chromedriver/
- 配置环境变量
将下载好的压缩包解压,放到自定义文件夹中,并将文件夹添加进环境变量。 - 若未配置环境,则在使用时指定路径即可(下文会详细说明)。
2.2 selenium 基本使用
import time
from selenium import webdriver
driver = webdriver.Chrome()
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)
cookies = driver.get_cookies()
cookie_dict = {i['name']:i['value'] for i in cookies}
print(cookie_dict)
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