Python爬虫——Selenium

元素的选取

定位一个元素 含义
find_element_by_id 通过元素id属性定位
find_element_by_name 通过元素name属性定位
find_element_by_xpath 通过xpath表达式定位
find_element_by_link_text 通过完成的超链接文本定位
find_element_by_partial_link_text 通过部分超链接文本定位
find_element_by_tag_name 通过标签名称定位
find_element_by_class_name 通过类名进行定位
find_element_by_css_selector 通过CSS Selector定位

如果要定位多个元素,把element改成elements即可(要注意,定位多个元素返回的是一个list类型的数据)

页面操作

type(elem)
>> selenium.webdriver.firefox.webelement.FirefoxWebElement

定位元素之后可以对元素进行操作:

  1. .send_keys() ——发送关键字(键盘输入,也可以发送一些特殊键,from selenium.webdriver.common.keys import Keys在这里面都有)
  2. .click()——点击
  3. .clear()——清空

用Selenium实现百度搜索


from selenium import webdriver
from selenium.webdriver.common.keys import Keys

dr = webdriver.Firefox()
dr.get(url)
elem = dr.find_element_by_name('wd')
elem.clear()
elem.send_keys(u'hello world')
elem.send_keys(Keys.ENTER)

  • 对于字段,只要找到那个WebElement(可以通过link_text来找),就可以用send_keys(text)来输入内容,再利用send_keys(Keys_ENTER)回车……来提交表单。
  • 特殊键Keys在selenium.webdriver.common.keys中。(from ~ import Keys)
  • 刷新按钮——Webdriver.refresh() 同理还有back() forward() quit() 分别代表后退 前进 退出

元素拖拽

from selenium.webdriver import ActionChains
achtion_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perfom()

窗口和页面frame的切换

driver.switch_to_window('windowName')

弹窗处理

alert = driver.switch_to_alert()    #alert对象
alert_dismiss()    # 关掉弹窗

Cookie 处理

#获取cookie
driver.get_cookies()
#添加cookies
driver.add_cookie(cookie)    # 传入一个字典

等待

  1. 直接用time.sleep() 让线程休眠。
  2. 隐式等待
    先尝试发现某个元素,如果没能立刻发现,就是等待固定长度的时间。
driver = webdriver.Firefox()
driver.implicitly_wait(5)   #等待5s
driver.get(url)
ele = driver.find_element_by_xxx()    #第一时间没能找到就会延迟。
  1. 显示等待
    等待一种条件触发,直到指定某一条件成立才继续执行。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
try:
    elem = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "idname")))
finally:
    driver.quit()

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