selenium
- 浏览器创建
- 元素定位
- 节点交互
- selenium相关的动作行为制定
- 动作链
- 模拟JavaScript
- 获取页面源码数据
- 前进和后退
- cookie处理
- 异常处理
参数设置常用:
# 浏览器设置 option = ChromeOptions() # 防拦截 option.add_experimental_option('excludeSwitches', ['enable-automation']) # 不加载图片 option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) 无界面 option.add_argument('--headless') option.add_argument('--disable-gpu') bro = Chrome(executable_path='lianjia/spiders/chromedriver.exe', options=option) bro.maximize_window()
selenium规避被检测识别
现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为
undefined。而使用selenium访问则该值为true。那么如何解决这个问题呢?
只需要设置Chromedriver的启动参数即可解决问题。在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation'],完整代码如下:
from selenium import webdriver from lxml import etree import time from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option) #让浏览器对指定url发起访问 bro.get('http://125.35.6.84:81/xk/') #获取浏览器当前打开页面的页面源码数据(可见即可得) page_text = bro.page_source time.sleep(2) tree = etree.HTML(page_text) name = tree.xpath('//*[@>)[0] print(name) time.sleep(5) bro.quit()