1.简介
Selenium 是一个用于Web应用程序测试的工具。它直接运行在浏览器中,模拟用户操作,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
简单来说,它就是一个支持各种浏览器及多种编程语言的强大自动化测试工具。
2.Selenium的用处
通过简介我们知道,自动化测试是它最大的用处。而在python中,我们能用它干嘛呢?注意简介里提到的一条关键信息——“模拟用户操作”!看到这里,我想很多道友已经猜到它的用处了。没错,我们就用它来模拟用户操作,比如:自动填写信息、自动抓取数据、自动登陆等等。
3.使用前的准备(以谷歌浏览器为例)
3.1安装selenium (pip install selenium)
3.2下载谷歌浏览器
3.3下载谷歌浏览器驱动
注意:
1)浏览器与浏览器驱动最好放于一个文件夹下
2)将chrome.exe所在路径加入系统的环境变量中
4.自动化爬取实例
应用背景:在豆瓣电影的搜索框中自动填入电影名,之后自动获取电影的评价人数,最后将信息写入csv文件。
4.1 代码展示
# coding:utf-8
import sys
import os
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import xlrd
import csv
os.chdir(r'C:\Users\Administrator\Desktop')
sys.setrecursionlimit(9000) # 设置最大递归深度为9000
# 自动获取电影的评论数
# para:电影名
def getRemark(movie_name):
option = webdriver.ChromeOptions()
option.add_argument('head')#“有头”模式,即可以看到浏览器界面,若要隐藏浏览器,可设置为 "headless"
dr = webdriver.Chrome(chrome_options = option)#得到操作对象
dr.get('https://movie.douban.com/')#打开豆瓣电影
dr.find_element_by_id('inp-query').send_keys(movie_name)#找到输入框并填写电影名
dr.find_element_by_class_name('inp-btn').click()#找到搜索按钮并点击
try:
dr.find_element_by_partial_link_text(movie_name).click()#找到包含电影名的最近链接并点击,打开电影具体信息页面
soup = bs(dr.page_source, 'lxml')#page_source得到当前网页的源代码
dr.quit()#关闭浏览器
return soup.select_one('.rating_sum').text
except:
return 'null'
# 将信息写入csv文件
def write(name):
count = getRemark(name)
print(name, count)
with open('remark.csv', 'a+', newline = '\n')as f:
w = csv.writer(f)
w.writerow([name, count])
if __name__ == '__main__':
names = ['战狼2', '红海行动']#电影名列表
print('----------------------开始自动化测试------------------------')
for n in names:
write(n)
print('--------------------测试完成-----------------------------------------')
4.2结果展示
5.总结
Selenium的好处十分明显,可以代替手工完成一系列操作。但缺点同样显著,那就是十分耗时,所以在使用时要根据具体情况进行考虑。