欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

爬虫之selenium

程序员文章站 2022-04-30 20:14:37
...

selenium

  • 配置
    • ChromeDriver
    • Firefox
    • 查看浏览器对应版本,在以上连接中下载对应相似度最高的版本的驱动,然后将其放在python目录下的Scripts目录下即可。
    • 安装selenium
      • pip install selenium -i https://pypi.douban.com/simple
  • 简单使用
    • 实例化
    from selenium import webdriver
    # 实例化
    # 谷歌
    driver_1 = webdriver.Chrome()
    # 火狐
    driver_2 = webdriver.Firefox()
    
    • driver.get('https://www.baidu.com') : 通过get方法发送请求
    • driver.quit(): 退出浏览器
    • find_element_by_id:根据id来查找某个元素
    • find_element_by_class_name:根据类名查找元素
    • find_element_by_name:根据name属性的值来查找元素
    • find_element_by_tag_name:根据标签名来查找元素
    • find_element_by_xpath:根据xpath语法来获取元素
    • find_element 找到的是满足条件的第一个元素
    • find_elements 找到的是满足条件的所有元素
    • cookies = driver.get_cookies() : 获取cookie
  • 操作表单元素
    • 操作输入框
      • 定位到这个元素
      • 使⽤send_keys(value),将数据填充进去
    • 按钮(点击操作)
      • 定位到这个元素
      • 执行click()方法
    • 操作checkbox
      • 选中这个标签(find_element)
      • 执⾏click事件(click())
  • 行为链
    • 将⿏标移动到某个元素上并执⾏点击事件
       actions = ActionChains(driver)
       actions.move_to_element(inputTag)
       actions.send_keys_to_element(inputTag, '123')
       actions.move_to_element(submitTag)	 
       actions.click(submitTag)
       actions.perform()
    
  • 关于隐式等待与显示等待
    • 隐式等待
      • driver.implicitly_wait(10)
        • 可以理解为在设定的10中,页面不停的刷新页面直到元素被找到或者时间耗尽抛出异常
    • 显示等待
      • 显示等待是表明某个条件成⽴后才执⾏获取元素的操作。也可以 在等待的时候指定⼀个最⼤的时间,如果超过这个时间那么就抛出⼀个异 常。显示等待应该使⽤selenium.webdriver.support.excepted_conditions 期望的条件和selenium.webdriver.support.ui.WebDriverWait来配合完成
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

element = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.ID, "myDynamicElement"))
)
element = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.ID, "myDynamicElement"))
 ) 
  • iframe
    • 当遇到iframe时,无法进行正常操作 ,这里要使用driver.switch_to_frame()方法或者driver.switch_to.frame(),推荐使用后者。

    • 用id定位:
      driver.switch_to_frame(“myframe”)

    • 用name定位:driver.switch_to_frame(“myframe”)

    • 用网页标签对象来定位:driver.switch_to_frame( driver.find_element_by_tag_name( “iframe” ))

  • 友情提示:没啥大事不要更新浏览器、不要更新浏览器、不要更新浏览器, 因为更新了你还得重新装驱动,虽然很快,但是很恼火
    关于取消浏览器自动更新
    win+r 输入msconfig
    爬虫之selenium
    然后重启电脑即可