selenium的基本使用
selenium
-
概念: 基于浏览器自动化的一个模块,
-
Appnium是基于手机的自动化模块
-
-
作用
-
便捷的爬取到动态加载的数据,可见即可得
-
便捷的实现模拟登陆,
-
-
基本使用
-
环境安装
-
pip install selenium
-
-
-
下载浏览器的驱动程序
-
浏览器版本和驱动程序的映射关系
-
动作链
-
from selenium.webdriver import ActionChains #动作连的类
-
#基于动作连实现滑动操作
action = ActionChains(bro)
#点击且长按
action.click_and_hold(div_tag)
for i in range(5):
#perform()表示让动作连立即执行
action.move_by_offset(20,20).perform()
sleep(0.5) -
在使用find系列的函数进行标签定位的时候如果出现了NoSuchElementException如何处理?
-
如果定位的标签是存在于iframe标签之下的,则在进行指定标签定位的时候 必须使用switch_to.frame()的操作才可。
-
bro.switch_to.frame('iframeResult') #frame的参数为iframe标签的id属性值
-
-
-
无头浏览器
-
from selenium.webdriver.chrome.options import Options
# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
-
-
如何规避selenium被监测到的风险
-
网站可以根据:window.navigator.webdriver的返回值鉴定是否使用了selenium
-
undefind:正常
-
true:selenium
-
#通过加参数让window。navigateor。webdriver返回值为undefined,规避监测
rom selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
bro = webdriver.Chrome(r'chromedriver.exe',options=option)
-
-
示例
-
from selenium import webdriver
import time
#实例化某一款浏览器对象
bro = webdriver.Chrome(executable_path='chromedriver.exe')
#基于浏览器发起请求
bro.get('https://www.jd.com/')
#商品搜索
#标签定位
search_input = bro.find_element_by_id('key')
#往定位到的标签中录入数据
search_input.send_keys('袜子')
#点击搜索按钮
btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button')
time.sleep(2)
btn.click()
time.sleep(2)
#滚轮滑动(js注入)
bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
-