selenium模块

一、selenium介绍

selenium最初是一个测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

二、selenium安装

pip3 install selenium
#下载chromdriver.exe放到python安装路径的scripts目录中
#国内镜像地址:http://npm.taobao.org/mirrors/chromedriver/
#官网地址:https://sites.google.com/a/chromium.org/chromedriver/downloads
###安装验证
from
selenium import webdriver driver=webdriver.Chrome() #弹出浏览器 driver.get('https://www.baidu.com') ##访问百度网址

三、常用方法

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
wait = driver.implicitly_wait(10)  #隐式等待,等所有,默认等10秒

#显示等待的用法
# wait = WebDriverWait(driver,10)  #显示等待,等指定的,和EC配合这使用
# wait.until(EC.presence_of_element_located((By.ID,"kw")))
# 如果显示等待是不能进行点击的,如果要点击,就得按照下面这样的方式,而隐式等待就不用考虑这个问题了。
# button = wait.until(EC.element_to_be_clickable((By.ID,"kw")))
# button.click()
try:
    # 1、find_element_by_id通过id来找
    # tag = driver.find_element_by_id("su")
    # print(tag.get_attribute("value"))  #获取上面这个标签的属性
    # 2、find_element_by_link_text通过有链接的文本去找
    # login = driver.find_element_by_link_text("登录")
    # print(login.get_attribute("href"))
    # login.click()  #点击登录按钮
    # 3、find_element_by_partial_link_text 找到包含这个录字的链接文本去找
    # login =  driver.find_element_by_partial_link_text("录")
    # login.click()
    # 4、find_element_by_tag_name通过标签的名字去找
    # print(driver.find_element_by_tag_name("a"))
    # time.sleep(5)
    # 5、find_element_by_class_name通过类名去找
    # print(driver.find_element_by_class_name("tang-pass-footerBarULogin"))
   # 6、通过css选择器找
   print(driver.find_element_by_css_selector("#kw"))
finally:
    driver.quit()

 

posted @ 2018-08-21 16:12  巽逸  阅读(177)  评论(0编辑  收藏  举报