Selenium库的基本用法总结

# !/usr/bin/env python
# -*- coding:utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver import ActionChains


# 获取WebDriver对象
# driver=webdriver.Firefox()
# driver=webdriver.Chrome()
# driver=webdriver.PhantomJS()


# 设置请求头
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
driver = webdriver.PhantomJS(desired_capabilities=dcap)


# Cookie处理
# 添加cookie
cookies={
    'username':'xxx',
    'password':'xxx'
}
driver.add_cookie(cookie_dict=cookies)
driver.get('http://example.com')
# 获取cookie
driver.get_cookies()


# 发起GET请求(阻塞状态)
driver.get('https://www.sogou.com/')


# 获取当前页面的URL
url=driver.current_url
# 获取HTML源码
source=driver.page_source


# 刷新
driver.refresh()

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

# 前进
driver.forward()
# 后退
driver.back()

# 最大化窗口
driver.maximize_window()

# 关闭当前页面(如果是最后一个页面,则退出浏览器)
# driver.close()
# 退出浏览器
# driver.quit()


# 获取网页中的元素

# 查找单个元素
# 通用查找方法,by参数指定查找类型,value参数指定查找值
# By.ID
# By.CLASS_NAME
# By.XPATH
# By.CSS_SELECTOR
# By.LINK_TEXT
# By.PARTIAL_LINK_TEXT
# By.NAME
# By.TAG_NAME
element=driver.find_element(by=By.ID,value='id')

# 特定查找方法
element = driver.find_element_by_id('id')
element=driver.find_element_by_class_name('class')
element=driver.find_element_by_xpath('xpath')
element=driver.find_element_by_css_selector('css_selector')
element=driver.find_element_by_link_text('link_text')                   # 通过完整链接定位
element=driver.find_element_by_partial_link_text('partial_link_text')   # 通过部分链接定位
element=driver.find_element_by_name('name')         # 通过元素name标记定位
element=driver.find_element_by_tag_name('tag_name') # 通过元素名称定位

# 查找多个元素(同上,返回list)
# 通用查找方法
elements=driver.find_elements(by=By.XPATH,value='xpath')
# 特定查找方法
elements=driver.find_elements_by_id('id')


# 清空输入框中的内容
element.clear()

# 模拟向输入框输入文字
element.send_keys('Python')

# 模拟按下回车键
element.send_keys(Keys.RETURN)

# 模拟点击(要求element为可点击按钮)
element.click()

# 处理弹窗
alert_ele=driver.switch_to.alert
alert_ele.dismiss()

# 拖拽元素ActionChains(动作链)
source_element=driver.find_element(By.ID,'id')
target_element=driver.find_element(By.ID,'id')
action_chains=ActionChains(driver)
action_chains.drag_and_drop(source=source_element,target=target_element).perform()


# 设置页面加载超时时间,单位:秒
driver.set_page_load_timeout(30)

# 处理加载页面时的等待
# 方式一:执行命令等待的最长时间,单位:秒
driver.implicitly_wait(5)
# 方式二:休眠线程
import time
time.sleep(5)
# 方式三:显式等待
try:
    element=WebDriverWait(driver,timeout=10).until(
        EC.presence_of_all_elements_located((By.ID,'id'))
    )
finally:
    driver.quit()


# 执行JS脚本
js='window.scrollTo(0,document.body.scrollHeight);'  # 滚动到页面底部
driver.execute_script(js)
time.sleep(3)

你可能感兴趣的:(爬虫)