Python 自动操作浏览器
1. 安装库
pip install selenium # Windows电脑安装selenium
pip3 install selenium # Mac电脑安装selenium
2.安装浏览器驱动
Chrome浏览器
http://chromedriver.storage.googleapis.com/index.html?path=103.0.5060.134/
3.设置浏览器引擎
# Chrome浏览器设置方法
from selenium import webdriver
#从selenium库中调用webdriver模块
driver = webdriver.Chrome()
# 设置引擎为Chrome,真实地打开一个Chrome浏览器
driver.close()
#关闭浏览器,以免浪费资源
并不想让浏览器弹出来,浮在其他界面上的话,可以采用下面的写法。
# 本地Chrome浏览器的静默模式设置:
from selenium import webdriver
#从selenium库中调用webdriver模块
from selenium.webdriver.chrome.options import Options
# 从options模块中调用Options类chrome_options = Options()
# 实例化Option对象
chrome_options.add_argument('--headless') # 把Chrome浏览器设置为静默模式
driver = webdriver.Chrome(options = chrome_options)
# 设置引擎为Chrome,在后台默默运行
driver.close()
4.使用selenium获取数据
selenium库同样也具备解析数据、提取数据的能力。它和BeautifulSoup的底层原理一致,但在一些细节和语法上有所出入。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get( url )
#打开指定网页
label = driver.find_element_by_tag_name('label')
print(label.text)
driver.close()
#关闭浏览器驱动
解析数据是由driver自动完成的,提取数据是driver的一个方法。
方法 | 用途 |
---|---|
find_element_by_id | id属性 |
find_element_by_class_name | class属性 |
find_element_by_name | name属性 |
find_element_by_tag_name | 元素标签名称 |
find_element_by_link_text | 链接文本获取超链接 |
find_element_by_partial_link_text | 链接部分文本获取超链接 |
find_element_by_xpath | 使用元素的绝对位置来获取,或相对于有一个id或name属性的元素 (理论上的父元素)的来获取你想要的元素 |
find_element_by_css_selector | 通过css选择器 |
提取出的数据属于WebElement类对象,<class 'selenium.webdriver.remote.webelement.WebElement'>
。它也有一个方法,可以通过属性名提取属性的值,这个方法是.get_attribute()
。
如果想要提取多个数据,在element后面加上s即可,提取出来的对象是由WebElement对象组成的列表。
除了上面的公共方法也有两个私有方法:
from selenium.webdriver.common.by import By
driver.find_element(By.,'')
driver.find_elements(By.,'')
By类的属性 |
---|
ID = id |
XPATH = xpath |
LINK_TEXT = link text |
PARTIAL_LINK_TEXT = partial link text |
NAME = name |
TAG_NAME = tag name |
CLASS_NAME = class name |
CSS_SELECTOR = css selector |
4.1 XPATH
页面示例:
<form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /><input name="continue" type="button" value="Clear" />
</form>
查找form元素可以这样写:
form = driver.find_element_by_xpath("/html/body/form[1]")
#绝对定位(页面结构轻微调整就会被破坏)
form = driver.find_element_by_xpath("//form[1]")
#HTML页面中的第一个form元素
form = driver.find_element_by_xpath("//form[@id='loginForm']")
#包含 id 属性并且其值为 loginForm 的form元素
4.2 CSS_SELECTOR
页面元素示例:
<p class="content">Site content goes here.</p>
查找p元素:
driver.find_element_by_css_selector('p.content')
5.操作浏览器
.send_keys() # 模拟按键输入,自动填写表单
.click() # 点击元素
.clear() #清除元素的内容
6.selenium与BeautifulSoup的合作
除了用selenium解析与提取数据,还有一种解决方案,那就是,使用selenium获取网页,然后交给BeautifulSoup解析和提取。先用selenium获取完整的网页源代码,再使用BeautifulSoup把字符串格式的html解析为BeautifulSoup对象,再从中提取数据。
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
#设置好浏览器后
driver.get( url )
#等待浏览器加载完数据
time.sleep(3)
#获取html字符串
HTML = driver.page_source
bs = BeautifulSoup(HTML,'html.parser')
label = bs.find('label')
driver.close()
selenium库的优点就是简单直观,然而由于真实的模拟人操作浏览器,需要等待网页加载,所以在爬取大量数据时,速度会比较慢。
另外,结尾附上selenium库的中文文档。
https://selenium-python-zh.readthedocs.io/en/latest/locating-elements.html
Python 自动操作浏览器相关推荐
- 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- python自动化操作浏览器
python的语法精炼简洁,并且很方便集成自动化工具selenium,因此特别适合各个行业的工作人员学习和编写简单程序来实现"机器人助理"帮我们处理频繁重复的网站操作. 废话不多说 ...
- python自动打开浏览器下载zip,并且提取内容写入excel
佬们轻喷,里面有些代码都是现学现写的,一些细节没处理好的地方还请指出来~~~ 首先贴上效果图:有些部分我没有放进来,比如浏览器的启动,但我相信聪明的你们那个玩意肯定一学就会.有些东西我没放进来 代码思 ...
- python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘
使用Python + win32api实现简单自动鼠标点击 使用tkinter设计GUI界面并用pyinstaller打包 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然 ...
- Python自动操作 GUI 神器——PyAutoGUI
我们以前讲过怎样使用 Python 在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作. 今天我们来聊一聊如何在桌面实现自动化操作.与浏览器页面自动化操作类似, ...
- Python自动操作GUI神器PyAutoGUI
日常使用计算机,命令行程序可以说是为批量操作文件而生,但作为普通用户,最多的还是通过鼠标键盘操作形形色色的图形界面程序.试想下面一个场景:有成千上万个文件,都需要通过图形界面进行同样的一套编辑.保存工 ...
- python自动操作微信_微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答...
原标题:微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答 本文为微信智能回复相关python项目,通过模拟网页端微信接口,实现跟好友之间自动的回复,并接入了图灵智能库,进行相应的内容 ...
- python自动操作微信_Python+Appium 自动化操作微信入门看这一篇就够了
简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...
- Selenium with Python 006 - 操作浏览器
#!/usr/bin/env python # -*- coding: utf-8 -*-from selenium import webdriver import timedriver = webd ...
最新文章
- 解密SSL流量,发现隐藏威胁
- 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名‘xxxs‘无效”异常处理
- C#基础知识梳理系列十:异常处理 System.Exception
- 从SQL Server 2000/2005到SQL Server 2008的升级测试
- 《THE LEAN STARTUP》 《精益创业》
- ipad流水布局及其旋转界面view间隔布局调整
- IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的......
- 阮一峰react demo代码研究的学习笔记 - demo10 debug
- Objective-C中的self和super
- 【LCT】洞穴勘测(luogu 2147/金牌导航 LCT-1)
- 通用唯一识别码UUID
- 冲刺阶段(二)第五天 5月16日
- 算法:数组中的逆序对
- cocos2D中scheduleOnce的陷阱
- html验证码功能如何实现原理,基于JS实现一个随机生成验证码功能
- VC知识库五周年精华珍藏版(2CD)
- 宏睿达智慧酒店云桌面系统远程控制台V4.1.4及前端桌面app V2.0.3支持直播的组播和单播格式、私密投屏、点播、周边、wifi管理、广告推送、多级管理、多主题管理
- LaTex - PPT 模板-2 (亲测可用)
- 解决virtualbox win7虚拟机全屏问题
- 6章4节类的声明和对象与方法
热门文章
- 探索微观宇宙超级计算机系统,人类可以制造出计算机,为何却制造不出细胞?细胞是微观宇宙?...
- 中网办:关于加强党政部门云计算服务网络安全管理的意见
- html列表远点小,40个网页常用的小代码
- Elasticsearch对Hbase中的数据建索引实现海量数据快速查询
- 【RTO and RPO】
- 精读Fully Attentional Network for Semantic Segmentation
- 中文文本分类之TextRNN
- 什么是复刻手表?几千块钱的表和几万的表有区别吗
- 使用sqlmap检测sql注入漏洞
- 特征匹配(三):根据词典进行匹配