from selenium import webdriver
option = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=option)
创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目
from selenium import webdriver
option = webdriver.ChromeOptions()
添加启动参数
option.add_argument()
添加扩展应用
option.add_extension()
option.add_encoded_extension()
添加实验性质的设置参数
option.add_experimental_option()
设置调试器地址
option.debugger_address()
常用配置参数:
from selenium import webdriver
option = webdriver.ChromeOptions()
添加UA
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”’)
指定浏览器分辨率
options.add_argument(‘window-size=1920x3000’)
谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument(‘–disable-gpu’)
隐藏滚动条, 应对一些特殊页面
options.add_argument(‘–hide-scrollbars’)
不加载图片, 提升速度
options.add_argument(‘blink-settings=imagesEnabled=false’)
浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument(‘–headless’)
以最高权限运行
options.add_argument(‘–no-sandbox’)
手动指定使用的浏览器位置
options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
#添加crx插件
option.add_extension(‘d:\crx\AdBlock_v2.17.crx’)
禁用JavaScript
option.add_argument(“–disable-javascript”)
设置开发者模式启动,该模式下webdriver属性为正常值
options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’])
禁用浏览器弹窗
prefs = {
‘profile.default_content_setting_values’ : {
‘notifications’ : 2
}
}
options.add_experimental_option(‘prefs’,prefs)
添加代理 ip
options.add_argument(“–proxy-server=http://XXXXX.com:80”)
driver = webdriver.Chrome(chrome_options=chrome_options)
其他配置项目参数
–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个
–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
启用书签同步
3、 常用参数搭配
=========
制作无头浏览器
第一种写法
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument(‘–headless’)
chrome_options.add_argument(‘–disable-gpu’)
driver = webdriver.Chrome(chrome_options=chrome_options)
第二种写法
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(‘–headless’)
options.add_argument(‘–disable-gpu’)
driver = webdriver.Chrome(chrome_options=options)
规避检测
门户网站检测如果是selenium请求的,有可能会拒绝访问。这也是一种反爬机制
实现规避检测
from selenium import webdriver
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_experimental_option(‘excludeSwitcher’, [‘enable-automation’])
driver = webdriver.Chrome(options=options)
注意:这里只能使用 options 添加
如果有其他的模块要添加,注意要分开添加
4、 分浏览器启动
=========
from selenium import webdriver
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Firefox(executable_path=“驱动路径”)
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Ie() # Internet Explorer浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.Opera() # Opera浏览器
driver = webdriver.PhantomJS() # PhantomJS
二、 基本语法
=======
1、 元素定位
=======
元素定位语法
常用语法:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
在 element 变成 elements 时,返回符合条件的所有元素组成的数组
2、 控制浏览器操作
==========
控制浏览器大小
- driver.set_window_size(480, 800)
浏览器后退,前进
driver.forward()
driver.back()
刷新
- driver.refresh()
3、 操作元素的方法
==========
3.1 点击和输入
=========
driver.find_element_by_id(“kw”).clear() # 清空文本
driver.find_element_by_id(“kw”).send_keys(“selenium”) # 模拟按键输入
driver.find_element_by_id(“su”).click() # 单击元素
3.2 提交
======
在搜索框模拟回车操作
search_text = driver.find_element_by_id(‘kw’) search_text.send_keys(‘selenium’) search_text.submit() # 模拟回车操作
3.3 其他
======
drive.size # 返回元素的尺寸
drive.text # 获取元素的文本
drive.get_attribute(name) # 获得属性值
drive.is_displayed() # 设置该元素是否用户可见
drive.page_source # 获取网页源代码
4、 鼠标操作
=======
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供
ActionChains 类提供了鼠标操作的常用方法:
click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
语法:
from selenium.webdriver.common.action_chains import ActionChains
获取元素
menu = driver.find_element_by_css_selector(“.nav”)
hidden_submenu = driver.find_element_by_css_selector(“.nav #submenu1”)
链式写法
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
分步写法
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
5、 键盘操作
=======
想使用selenium中的键盘事件,首先我们必须导入Keys包,需要注意的是包名称Keys首字母需要大写。Keys类中提供了几乎所有的键盘事件包括组合按键如 Ctrl+A、 Ctrl+C 等
使用语法:
from selenium.webdriver.common.keys import Keys
element.send_keys(键盘事件)
常用键盘事件
Keys.BACK_SPACE # 回退键(BackSpace)
Keys.TAB # 制表键(Tab)
Keys.ENTER # 回车键(Enter)
Keys.SHIFT # 大小写转换键(Shift)
Keys.CONTROL # Control键(Ctrl)
Keys.ALT # ALT键(Alt)
Keys.ESCAPE # 返回键(Esc)
Keys.SPACE # 空格键(Space)
Keys.PAGE_UP # 翻页键上(Page Up)
Keys.PAGE_DOWN # 翻页键下(Page Down)
Keys.END # 行尾键(End)
Keys.HOME # 行首键(Home)
Keys.LEFT # 方向键左(Left)
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
166b2ffa9c677ac40fc0.png)
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-PIKG9bpY-1711211726655)]