selenium是用于浏览器测试的自动化工具,可以直接运行在浏览器中,模拟用户的各种操作。
在爬虫领域的应用,主要就是模拟人的操作,打开浏览器,获取网页源码。获得网页源码之后就可以再利用BeautifulSoup、XPath等去解析和提取我们需要的数据了。
本文主要介绍了Python Selenium的一些基础操作,如打开浏览器、打开网页、网页切换、获取网页源码等操作。
1 导入核心模块selenium.webdriver
selenium.webdriver模块是使用中的核心模块,提供了常用浏览器的WebDriver实现。目前支持的WebDriver实现有Firefox,Chrome,IE和Remote等,本文主要使用Chrome。
1 | # 导入driver模块 |
2 打开浏览器
导入driver模块之后,就可以使用它打开浏览器了,代码如下所示
1 | browser = webdriver.Chrome(chrome_path) # chrome_path为本地的chrome驱动的路径 |
3 打开网页
打开Chrome浏览器后,会打开一个默认的空白标签页,接下来就可以在标签页中打开一个网页了,代码如下所示:
1 | url = r"https://www.jianshu.com/u/a9f6f9178f66" |
在浏览器中可以打开很多个标签页,每一个标签页都有唯一的标识,也被我们称作标签页的句柄,可以用来在不同的标签页之间切换。
4 打开多个网页
我们也可以在新的标签页中打开另一个网页,需要通过执行一个简单的脚本语句实现,脚本语句如下第2行代码所示:
1 | new_url = r"https://github.com/Oythonhill" |
同样的,我们也可以获取当前所有打开标签页的句柄(以列表类型呈现)。
当然,我们页可以切换到之前的标签页,代码如下:1
browser.swich_to.window(init_handle) # 根据之前获取的标签页句柄定位
5 获取源码
获取当前页面的网页源码,获得源码之后就可以通过Beautiful或者XPath进行解析了,当然也可以使用Selenium内置的定位元素的一些方法,这个在另外一篇再说1
source_code = browser.page_source
最后,就是关闭标签页或者浏览器1
2browser.close() # 关闭当前标签页
browser.quit() # 关闭整个浏览器