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 自动操作浏览器相关推荐

  1. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. python自动化操作浏览器

    python的语法精炼简洁,并且很方便集成自动化工具selenium,因此特别适合各个行业的工作人员学习和编写简单程序来实现"机器人助理"帮我们处理频繁重复的网站操作. 废话不多说 ...

  3. python自动打开浏览器下载zip,并且提取内容写入excel

    佬们轻喷,里面有些代码都是现学现写的,一些细节没处理好的地方还请指出来~~~ 首先贴上效果图:有些部分我没有放进来,比如浏览器的启动,但我相信聪明的你们那个玩意肯定一学就会.有些东西我没放进来 代码思 ...

  4. python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘

    使用Python + win32api实现简单自动鼠标点击 使用tkinter设计GUI界面并用pyinstaller打包 不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然 ...

  5. Python自动操作 GUI 神器——PyAutoGUI

    我们以前讲过怎样使用 Python 在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作. 今天我们来聊一聊如何在桌面实现自动化操作.与浏览器页面自动化操作类似, ...

  6. Python自动操作GUI神器PyAutoGUI

    日常使用计算机,命令行程序可以说是为批量操作文件而生,但作为普通用户,最多的还是通过鼠标键盘操作形形色色的图形界面程序.试想下面一个场景:有成千上万个文件,都需要通过图形界面进行同样的一套编辑.保存工 ...

  7. python自动操作微信_微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答...

    原标题:微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答 本文为微信智能回复相关python项目,通过模拟网页端微信接口,实现跟好友之间自动的回复,并接入了图灵智能库,进行相应的内容 ...

  8. python自动操作微信_Python+Appium 自动化操作微信入门看这一篇就够了

    简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...

  9. Selenium with Python 006 - 操作浏览器

    #!/usr/bin/env python # -*- coding: utf-8 -*-from selenium import webdriver import timedriver = webd ...

最新文章

  1. 解密SSL流量,发现隐藏威胁
  2. 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名‘xxxs‘无效”异常处理
  3. C#基础知识梳理系列十:异常处理 System.Exception
  4. 从SQL Server 2000/2005到SQL Server 2008的升级测试
  5. 《THE LEAN STARTUP》 《精益创业》
  6. ipad流水布局及其旋转界面view间隔布局调整
  7. IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的......
  8. 阮一峰react demo代码研究的学习笔记 - demo10 debug
  9. Objective-C中的self和super
  10. 【LCT】洞穴勘测(luogu 2147/金牌导航 LCT-1)
  11. 通用唯一识别码UUID
  12. 冲刺阶段(二)第五天 5月16日
  13. 算法:数组中的逆序对
  14. cocos2D中scheduleOnce的陷阱
  15. html验证码功能如何实现原理,基于JS实现一个随机生成验证码功能
  16. VC知识库五周年精华珍藏版(2CD)
  17. 宏睿达智慧酒店云桌面系统远程控制台V4.1.4及前端桌面app V2.0.3支持直播的组播和单播格式、私密投屏、点播、周边、wifi管理、广告推送、多级管理、多主题管理
  18. LaTex - PPT 模板-2 (亲测可用)
  19. 解决virtualbox win7虚拟机全屏问题
  20. 6章4节类的声明和对象与方法

热门文章

  1. 探索微观宇宙超级计算机系统,人类可以制造出计算机,为何却制造不出细胞?细胞是微观宇宙?...
  2. 中网办:关于加强党政部门云计算服务网络安全管理的意见
  3. html列表远点小,40个网页常用的小代码
  4. Elasticsearch对Hbase中的数据建索引实现海量数据快速查询
  5. 【RTO and RPO】
  6. 精读Fully Attentional Network for Semantic Segmentation
  7. 中文文本分类之TextRNN
  8. 什么是复刻手表?几千块钱的表和几万的表有区别吗
  9. 使用sqlmap检测sql注入漏洞
  10. 特征匹配(三):根据词典进行匹配