selenium环境搭建+元素定位
1、在 window的cmd窗口里面输入这个命令下载
pip install selenium
2、下载谷歌浏览器
安装完谷歌浏览器之后查看谷歌版本浏览器输入命令回车即可看到:Chrome://version
3、找到对应的谷歌浏览器驱动
Chromedriver (谷歌浏览器驱动)
http://npm.taobao.org/mirrors/chromedriver/
版本对照表:
Firefoxdriver (火狐浏览器驱动)
https://github.com/mozilla/geckodriver/releases
版本对照表:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
使用 selenium 访问百度并搜索 (一个小demo)
# -*- coding: utf-8 -*-
# @Author:lsf
# @File:1打开百度
# @Time:2021/7/15
# @Email:2795849212@qq.com
# @Software:PyCharm
import time
# 先导入 selenium的包
from selenium import webdriver
# 得到一个 driver对象
driver = webdriver.Chrome()
# 打开浏览器
driver.get('https://www.baidu.com')
# 定位搜索框并输入内容
driver.find_element_by_id('kw').send_keys('6666\n')
# 强制等待两秒
time.sleep(2)
# # 关闭浏览器打开的页面
# driver.close()
# 关闭浏览器驱动对象、一般用这个比较多
driver.quit()
反爬虫设置
from selenium import webdriver
options = webdriver.ChromeOptions()
# 设置为开发者模式,防止被各大网站识别出来使用了Selenium
# 屏蔽 windows.navigator.webdriver
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# # 不加载图片,加快访问速度
# options.add_experimental_option(
# "prefs", {"profile.managed_default_content_settings.images": 2})
driver = webdriver.Chrome(executable_path="/Users/nathaniel/MyApp/lib/seleniumLib/chromedriver",
options=options)
driver.get("https://www.baidu.com")
driver.quit()
八大元素定位大法 查找单个元素
# -*- coding: utf-8 -*-
# @Author:lsf
# @File:2八大定位元素方法
# @Time:2021/7/15
# @Email:2795849212@qq.com
# @Software:PyCharm
# 导入selenium的包
from selenium import webdriver
# 得到一个 driver对象
driver = webdriver.Chrome()
# 根据id进行定位,查找单个元素、如果找不到元素则报错
driver.find_element_by_id()
# 根据name属性进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_name()
# 根据css selector进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_css_selector()
# 根据 xpath进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_xpath()
# 根据 class进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_class_name()
# 根据 标签名进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_tag_name()
# 根据文本链接进行定位、查找单个元素、如果找不到则报错
driver.find_element_by_link_text()
# 模糊匹配文本链接、查找单个元素、如果找不到则报错
driver.find_element_by_partial_link_text()
八大元素定位大法 查找多个元素
# -*- coding: utf-8 -*-
# @Author:lsf
# @File:3八大定位元素查找多个
# @Time:2021/7/15
# @Email:2795849212@qq.com
# @Software:PyCharm
# -*- coding: utf-8 -*-
# @Author:lsf
# @File:2八大定位元素方法
# @Time:2021/7/15
# @Email:2795849212@qq.com
# @Software:PyCharm
# 导入selenium的包
from selenium import webdriver
# 得到一个 driver对象
driver = webdriver.Chrome()
# 根据id进行定位,查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_id()
# 根据name属性进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_name()
# 根据css selector进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_css_selector()
# 根据 xpath进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_xpath()
# 根据 class进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_class_name()
# 根据 标签名进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_tag_name()
# 根据文本链接进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_link_text()
# 模糊匹配文本链接、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_partial_link_text()
总结
_elements_by_tag_name()
根据文本链接进行定位、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_link_text()
模糊匹配文本链接、查找多个元素、如果找不到元素则返回空集合
driver.find_elements_by_partial_link_text()
总结
如果想判断是否找到这个元素建议使用 查找多个元素的方法、因为没有查找到这个元素的话返回的是个空集合可以拿这个来做判断