Selenium 环境配置好之后,我们就可以使用 Selenium 来操作浏览器,做一些我们想做的事情了。在我们爬取网页过程中,经常发现我们想要获得的数据并不能简单的通过解析 HTML 代码获取,这些数据是通过 AJAX 异步加载方式或经过 JS 渲染后才呈现在页面上显示出来。这种情况下我们就可以使用 Selenium 来模拟浏览器浏览页面,进而解决 JavaScript 渲染的问题。

浏览器设置

打开浏览器

我们用最简洁的代码来打开 Chrome 浏览器,并访问 http://www.baidu.com 这个网站:

from selenium import webdriver# 声明浏览器对象driver = webdriver.Chrome()# 访问页面driver.get("http://www.baidu.com")

我们可以看到桌面会弹出一个浏览器窗口,并打开了百度的首页,如下图:

selenium-open-browser

注意红框圈住的部分,这表示这个窗口是我们程序打开的,现在浏览器的控制权在我们的程序中,我们可以用代码让浏览器摆出各种姿势了!

设置浏览器参数

为了避免每次运行程序都打开一个窗口,我们也可以设置无窗口访问,只需添加浏览器参数即可:

from selenium import webdriver# 设置无窗口chrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--headless')# 声明浏览器对象driver = webdriver.Chrome(options=chrome_options)# 访问页面driver.get("http://www.baidu.com")

常见的浏览器参数还有:

# 启动就最大化--start-maximized# 指定用户文件夹 User Data 路径,可以把书签这样的用户数据保存在系统分区以外的分区–-user-data-dir=”[PATH]”# 指定缓存Cache路径–-disk-cache-dir=”[PATH]“# 指定Cache大小,单位Byte–-disk-cache-size=100# 隐身模式启动–-incognito# 禁用Javascript–-disable-javascript# 禁止加载所有插件,可以增加速度--disable-plugins# 禁用JavaScript--disable-javascript# 禁用弹出拦截--disable-popup-blocking# 禁用插件--disable-plugins# 禁用图像--disable-images

还有其他好多参数,具体可参见 https://peter.sh/experiments/chromium-command-line-switches/ ,该网站罗列了所有的参数。

设置代理很简单,只需要添加一个浏览器参数就行:

chrome_options.add_argument('--proxy-server=http://{ip}:{port}')

在参数里面加上代理的 IP 和端口号。

获取页面元素

获取单个元素

selenium 查找元素有两种方法:第一种是指定使用哪种方法去查找元素,比如指定 CSS 选择器或者根据 xpath 去查找;另一种是直接使用 find_element() ,传入的第一个参数为需要使用的元素查找方法,第二个参数为查找值。来看下例:

from selenium import webdriverfrom selenium.webdriver.common.b
Python 中,可以使用 Selenium 的 find_elements 方法来 获取 元素 个数 。 from selenium import webdriver driver = webdriver.Firefox() driver.get("https://www.example.com") # 获取 页面 中 id 为 "content" 的 元素 的所有子 元素 elements ... 在 Selenium 中,使用 find_elements_by_xpath() 方法来 查找 多个 元素 ,然后可以循环遍历这些 元素 ,并使用 get_attribute() 方法 获取 每个 元素 的属性值。 elements = driver.find_elements_by_xpath("//a") for element in elements: print(element.get_att... List<WebElement> elements = driver.findElements(By.tagName("select")); int number=elements.size(); As... 前言在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试, 已经 无... 一、什么是 Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制( selenium IDE),编写及运行( Selenium Remote Control)和测试的并行处理( Selenium Grid)。 Selenium 的核心 Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的 浏览器 上。 selenium ... 点击上方蓝色字体,关注我们 本文主要介绍 selenium 在爬虫脚本的实际应用。适合刚接触 python ,没使用过 selenium 的童鞋。(如果你是老司机路过的话,帮忙点个star吧)项目地址  https://github.com/Denon/sync... selenium 介绍  直接引用 selenium 官网的话: Selenium automates browsers. That's it... 前言 selenium 是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制 浏览器 ,但是你得告诉 浏览器 ,你想干嘛,爬哪里,这时候就要用到 元素 定位了,在HTML中都有着不同的标签和属性, selenium 根据它们来确定你的意图,每个方式都对应两个方法8种方式1.通过 id 定位2.通过 name 定位3.通过 class 定位4.通过 tag 定位5.通过 link 定位6.通过 partial ... public class ElementsDemo { public static void main(String[] args) throws InterruptedException { //驱动配置 System.setProperty("webdriver. chrome .driver","D:\\driver\\ chrome driver.ex... 在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试, 已经 无法满足如今的业务要求,只能被企业逐步裁员淘汰。「自动化测试和持续测试」就成为了业界主流。如果在招聘网站搜索「测试工程师」的职位,95% 的招聘都会有「掌握自动化测试以及 Python 」的相关要求。可以说, python ... 从这一章开始,咱们将探讨爬虫的进阶部分,难度比起之前的初级也是有所提升。一、动态HTML技术二、 Selenium + chrome driver介绍三、 Selenium 获取 动态数据基本操作一、动态HTML技术1.动态HTML技术了解这是几种动态 页面 技术:1.1 JS它是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载 页面 直接提交表单,在 页面 嵌入多媒体文件,甚至运行网页。1.2 jQueryj...