Python使用selenium+chrome配置指南


Python使用selenium+chrome配置指南

安装模块

PowerShell 全选
pip install selenium

导入模块

Python 全选
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

官方参考:

https://sites.google.com/a/chromium.org/chromedriver/capabilities

设置编码格式

Python 全选
# 设置默认编码为 utf-8,也就是中文

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)

设置代理

  • 为selenium爬虫添加代理,这个地方尤其需要注意的是,在选择代理时,尽量选择静态IP,才能提升爬取的稳定性。因为如果选择selenium来做爬虫,说明网站的反爬能力比较高(要不然直接上scrapy了),对网页之间的连贯性,cookies,用户状态等有较高的监测。如果使用动态匿名IP,每个IP的存活时间是很短的(1~3分钟)。
Python 全选
chrome_options = Options()
# 设置代理
chrome_options.add_argument("--proxy-server=http://%(host)s:%(port)s" % {
    "host": proxyHost,
    "port": proxyPort,
})
# 一定要注意,=两边不能有空格,不能是这样--proxy-server = http://202.20.16.82:10152

设置浏览器窗口大小

Python 全选
chrome_options = Options()
# 设置浏览器窗口大小
window_size = getWindowSize()
# driver.set_window_size(window_size[0], window_size[1])
chrome_options.add_argument("--window-size=%(width)s,%(height)s" % {
    "width": window_size[0],
    "height": window_size[1]
})

改变窗口大小

弹出浏览器窗口时,如果要改变窗口大小,需要

C# 全选
# 改变窗口大小
driver.set_window_size(window_size[0], window_size[1])

设置UA

Python 全选
# 浏览器UA
def getUA():
    uaList = [
        #360
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
        #chrome
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",
        #"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",
        "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",

        #firefox
        #"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0",
        "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0",

        #ie11
        #"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
        #ie8
        #"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.1357; 4399Box.1253; 4399Box.1357)",

        #2345王牌
        #"Chrome/39.0.2171.99 Safari/537.36 2345Explorer/6.5.0.11018",

        #搜狗
        #"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
        #opera
        "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"
    ]
    headers = random.choice(uaList)
    return headers

# 设置UA
user_agent = getUA()
chrome_options.add_argument('user-agent=%s' % user_agent)

模拟移动端设备

Python 全选
# 通过设置user-agent,用来模拟移动设备
# 比如模拟 android QQ浏览器
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')

# 模拟iPhone 6
options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')

禁止图片加载

  • 不加载图片的情况,可以提升爬取速度。
Python 全选
# 禁止图片的加载
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

# 启动浏览器,并设置好wait
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.set_window_size(configure.windowHeight, configure.windowWidth)   # 根据桌面分辨率来定,主要是为了抓到验证码的截屏
wait = WebDriverWait(browser, timeout = configure.timeoutMain)

浏览器选项设置和添加浏览器扩展应用

参考链接:https://blog.csdn.net/zwq912318834/article/details/78933910

其他参数

参考文章:http://blog.csdn.net/liaojianqiu0115/article/details/78353267

chrome地址栏命令

  • 在Chrome的浏览器地址栏中输入以下命令,就会返回相应的结果。这些命令包括查看内存状态,浏览器状态,网络状态,DNS服务器状态,插件缓存等等。但是需要注意的是这些命令会不停的变动,所以不一定都是好用的。
PowerShell 全选
about:version - 显示当前版本
about:memory - 显示本机浏览器内存使用状况
about:plugins - 显示已安装插件
about:histograms - 显示历史记录
about:dns - 显示DNS状态
about:cache - 显示缓存页面
about:gpu -是否有硬件加速
about:flags -开启一些插件 //使用后弹出这么些东西:“请小心,这些实验可能有风险”,不知会不会搞乱俺的配置啊!
chrome://extensions/ - 查看已经安装的扩展

chrome实用参数

  • 其他的一些关于Chrome的实用参数及简要的中文说明,使用方法同上4.5.4,当然也可以在shell中使用。
PowerShell 全选
–user-data-dir=”[PATH]” 指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区。
–disk-cache-dir=”[PATH]“ 指定缓存Cache路径
–disk-cache-size= 指定Cache大小,单位Byte
–first run 重置到初始状态,第一次运行
–incognito 隐身模式启动
–disable-javascript 禁用Javascript
–omnibox-popup-count=”num” 将地址栏弹出的提示菜单数量改为num个。我都改为15个了。
–user-agent=”xxxxxxxx” 修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果
–disable-plugins 禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果
–disable-javascript 禁用JavaScript,如果觉得速度慢在加上这个
–disable-java 禁用java
–start-maximized 启动就最大化
–no-sandbox 取消沙盒模式
–single-process 单进程运行
–process-per-tab 每个标签使用单独进程
–process-per-site 每个站点使用单独进程
–in-process-plugins 插件不启用单独进程
–disable-popup-blocking 禁用弹出拦截
–disable-plugins 禁用插件
–disable-images 禁用图像
–incognito 启动进入隐身模式
–enable-udd-profiles 启用账户切换菜单
–proxy-pac-url 使用pac代理 [via 1/2]
–lang=zh-CN 设置语言为简体中文
–disk-cache-dir 自定义缓存目录
–disk-cache-size 自定义缓存最大值(单位byte)
–media-cache-size 自定义多媒体缓存最大值(单位byte)
–bookmark-menu 在工具 栏增加一个书签按钮
–enable-sync 启用书签同步
–single-process 单进程运行Google Chrome
–start-maximized 启动Google Chrome就最大化
–disable-java 禁止Java
–no-sandbox 非沙盒模式运行
  • 常用
PowerShell 全选
–single-process 单进程运行Google Chrome
–start-maximized 启动Google Chrome就最大化
–disable-java 禁止Java
–no-sandbox 非沙盒模式运行

清空cookie

Python 全选
driver = webdriver.Chrome(executable_path='D:/chromedriver/chromedriver.exe',
                          chrome_options=chrome_options)
driver.delete_all_cookies()

发起页面请求

Python 全选
driver = webdriver.Chrome(executable_path='D:/chromedriver/chromedriver.exe',
                          chrome_options=chrome_options)
driver.get(targetUrl)
print(driver.title)
print(driver.page_source.encode("utf-8"))

禁止输出日志

默认会有很多 info Console 的信息输出

禁用大量日志信息输出,INFO = 0 WARNING = 1 LOG_ERROR = 2 LOG_FATAL = 3 default is 0 就可以禁用大量日志信息滚动输出。

通过设置日志输出等级,来达到减少日志输出的目的

Python 全选
from selenium.webdriver.chrome.options import Options
options = Options()
# 设置日志输出级别
options.add_argument('log-level=3')

driver = webdriver.Chrome(
executable_path='D:/chromedriver/chromedriver.exe',
# chrome_options=chrome_option,
options=options)

规避检测

详细信息参考:https://www.yesdotnet.com/archive/post/1633801661.html

PowerShell 全选
driver.execute_cdp_cmd(
"Page.addScriptToEvaluateOnNewDocument", {
    "source":
    """
Object.defineProperty(navigator, 'webdriver', {
  get: () => undefined
})
      """
})

参考:https://ljdd520.github.io/2019/12/16/selenium%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8Cchrome%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9A%84options%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B/#%E5%89%8D%E8%A8%80

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:Python使用selenium+chrome进行抓包
下一篇:VScode配置Python开发环境
评论列表

发表评论

评论内容
昵称:
关联文章

Python使用selenium+chrome配置指南
C#爬虫:使用Selenium,Selenium配置指南
Python使用selenium+chrome进行抓包
Python Selenium 爬虫如何隐藏Headles-Chrome不被检测出来 避免检测
Python Selenium使用火狐浏览器驱动
Python Selenium ChromeDriver 规避检测
Python Selenium 前端如何检测Chrome-Headless不被爬虫虐
Python Selenium Firefox 代理设置
SEO刷排名工具参数配置指南
python四种配置文件
monaco-editor使用指南
selenium爬虫被检测到 该如何破
使用 mitmproxy + python 做拦截代理
VScode配置Python开发环境
gitblit服务器配置指南
VS2017调试闪退之Chrome
Python安装使用yaml模块
Python使用SQL Server数据库
.net Core项目.csproj配置指南
bing必应网站站长指南

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码