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.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=option)
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()
View Code

相关文章:

  • 2021-11-28
  • 2021-10-06
  • 2021-09-12
  • 2021-07-24
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-22
  • 2022-12-23
  • 2022-12-23
  • 2022-02-27
  • 2022-01-11
  • 2022-02-20
相关资源
相似解决方案