python爬虫之selenium获取网页
2019-08-16 本文已影响0人
行走世间的狮子
本质: 代码操纵浏览器,自动化访问网页
环境:
- selenium模块:Web自动化测试工具,应用于Web自动化测试
- chromdriver:chrome流量器自动化测试工具
使用:
- 使用流程
from selenium import webdriver
# chrome设置无界面模式
# opt = webdriver.ChromeOptions()
# opt.set_headless()
# driver = webdriver.Chrome(options=opt)
# 创建浏览器对象
driver = webdriver.Chrome()
# 模拟浏览器打开网页
driver.get(url)
# 获取节点对象
# 获取单个元素,如果匹配到多个节点,则只返回第1个节点对象
element = driver.find_element_by_id("") # 通过id获取节点
element = driver.find_element_by_class_name("") # 通过class获取节点
element = driver.find_element_by_xpath('xpath表达式') # 通过xpath语法获取节点
# 获取多个元素,如果结果1个,则返回节点对象,否则返回列表
# elements = driver.find_elements_by_....
# 操作节点对象
element.send_keys("内容") # 往输入框里输入内容
element.clear() # 清除输入内容
element.click() # 点击按钮
# 获取网页源代码
HTML = driver.page_source
# 获取截图
PNG = driver.save_screenshot()
# 关闭浏览器
driver.close()
- 输入ctrl,alt,shift等特殊键及快捷键
from selenium.webdrier.common.keys import Keys
...
# 全选ctrl + a
element.send_keys(Keys.CONTROL,'a')
# 回车
element.send_keys(Keys.ENTER)
...
- 一些问题的应对办法
# 判断按钮是否可点 ---> 页面是否含有不可点按钮元素
# 利用字符串的查找
if driver.page_source.find('...disable...') == -1:
pass
# 滑动进度条拉到底部 ---> 用于一些AJAX动态加载
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")