谷歌浏览器
from selenium import webdriver
import os
# 进入浏览器设置
options = webdriver.ChromeOptions()
# 谷歌无头模式
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# 设置页面大小
options.add_argument('window-size=1200x600')
# 设置中文
options.add_argument('lang=zh_CN.UTF-8')
# 更换头部
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
# 设置代理
options.add_argument('proxy-server=' + proxy)
# 不加载图片
options.add_experimental_option('prefs', {"profile.managed_default_content_settings.images": 2})
# 设置下载路径
options.add_experimental_option('prefs', {"download.default_directory": os.path.abspath('数据\\')})
# 除去“正受到自动测试软件的控制”提示框
options.add_argument('disable-infobars')
# 打开开发者模式
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 不使用自动化扩展
options.add_experimental_option('useAutomationExtension', False)
# 去除selenium的一个指纹
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
# 导入当前py文件目录下的chromedriver
executable_path = os.path.abspath('chromedriver.exe')
browser = webdriver.Chrome(executable_path=executable_path, chrome_options=options)
url = "https://httpbin.org/get?show_env=1"
browser.get(url)
# 设置浏览器窗口大小
browser.set_window_size(1552, 800)
# 删除原来的cookie
browser.delete_all_cookies()
# 添加cookie
browser.add_cookie({'name':'ABC','value':'DEF'})
# 刷新当前页面
browser.refresh()
# 通过js新打开一个窗口
page_js='window.open("https://www.baidu.com");'
browser.execute_script(page_js)
# 用js点击元素
button = browser.find_element_by_xpath('//*[@class="button"]')
browser.execute_script("$(arguments[0]).click()",button)
# 用js滑动滑动条
js = "var q=document.documentElement.scrollTop="
for i in range(1, 15):
browser.execute_script(js + str(i * 100))
# 切换浏览器最新页面窗口
browser.switch_to.window(browser.window_handles[-1])
# 切换浏览器至第一个iframe框架
browser.switch_to.frame(1)
# 切换浏览器的弹出框 并点击同意
self.browser.switch_to.alert.accept()
# 浏览器窗口对象
browser.window_handles: list
# 关闭当前窗口
browser.close()
# 关闭浏览器
browser.quit()
利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。
打开cmd,在命令行中输入命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenum\AutomationProfile"
对于-remote-debugging-port值,可以指定任何打开的端口。
对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
还有,不要忘了在环境变量中PATH里将chrome的路径添加进去。
此时会打开一个浏览器页面,我们输入淘宝网址,我们把它当成一个已存在的浏览器:
selenium通过设置代理,来监听该浏览器,从而控制浏览器,接管浏览器例子:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
browser = webdriver.Chrome(options=options)
火狐浏览器
from selenium import webdriver
from selenium.webdriver.common.proxy import *
'''
#这种方法在py3好像有点问题隐藏了
# 代理
myProxy = '202.202.90.20:8080'
# 代理格式
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy': ''
})
profile = webdriver.FirefoxProfile()
profile = get_firefox_profile_with_proxy_set(profile, proxy)
'''
ip = '27.44.221.62:4213'
ip_ip = ip.split(":")[0]
ip_port = int(ip.split(":")[1])
profile = webdriver.FirefoxProfile()
profile.set_preference('network.proxy.type', 1) # 默认值0,就是直接连接;1就是手工配置代理。
profile.set_preference('network.proxy.http', ip_ip)
profile.set_preference('network.proxy.http_port', ip_port)
profile.set_preference('network.proxy.ssl', ip_ip)
profile.set_preference('network.proxy.ssl_port', ip_port)
profile.update_preferences()
driver = webdriver.Firefox(profile)
profile.set_preference("general.useragent.override", user_agent)
# firefox无头模式
options = webdriver.FirefoxOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('window-size=1200x600')
executable_path = os.path.abspath('geckodriver.exe')
driver=webdriver.Firefox(proxy=proxy, profile=profile,
options=options, executable_path=executable_path)
driver.get('https://www.baidu.com')
driver.quit()
options = webdriver.FirefoxOptions()
# 不加载图片,加快访问速度
#options.set_preference('permissions.default.image',2)
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium 火狐好像不用设置
#options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 添加本地代理
## 第二步:开启“手动设置代理”
options.set_preference('network.proxy.type', 1)
## 第三步:设置代理IP
options.set_preference('network.proxy.http', '221.180.170.104')
## 第四步:设置代理端口,注意端口是int类型,不是字符串
options.set_preference('network.proxy.http_port', 8080)
# 添加UA
#ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
#options.add_argument('user-agent=' + ua)
driver = webdriver.Firefox(options=options)