python爬虫之selenium插件

By | 2024-02-18

selenium插件基础使用

  • 需要的包

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.options import Options
    
  • 必须的步骤代码

    # 打开测试浏览器并打开网站
    def open(self):
      global wd
      wd = webdriver.Chrome()  # 谷歌浏览器
      wd.get("http://xxxx")  # 打开网站
      wd.implicitly_wait(10)  # 等待元素出现的时间(秒)
    
  1. 此代码以将chromedriver扔进环境变量为前提
  2. wd.implicitly_wait()sleep()的作用不一样,前者是搜索到你要操作的元素就点,超过设定时间后终止程序;后者是等待设定的时间后再操作。实战中,特别是那种选择日期之类有选项的,在同一页面操作时,wait()还没等选择完日期就进行其他操作了,很可能会导致选择日期的下一步失效。
  • 可选的配置

    # 隐藏测试模式
    def hidden(self):
      chrome_options = Options()
      chrome_options.add_argument("--disable-blink-features=AutomationControlled")
      chrome_options.add_argument("--headless")
      chrome_options.add_argument('user-agent=浏览器F12搜索')
    
  • 操作一览

1.查找需要操作的按钮(元素)

wd.find_element(By.xx, “xx”) 描述
By.ID 通过id查找
By.XPATH F12右键复制XPATH
By.CLASS_NAME 通过CLASS_NAME查找

2.元素操作

element.xx 描述
send_keys(“”) 输入内容
click() 点击
find_element() 查找元素

3.其他操作

wd.xx 描述
switch_to.frame(“”) 进入嵌套iframe层
switch_to.default_content() 退回上一级iframe层
execute_script(“”) js操作,找到并点击

4.例子

wd.switch_to.frame(wd.find_element(By.XPATH, '//*[@id="xx"]/iframe'))
element = wd.find_element(By.XPATH, '//*[@id="xx"]/input')
element.send_keys("xx")
time.sleep(0.5)
wd.switch_to.default_content()
  • 模拟鼠标操作