一、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()