selenium简单应用
selenium是python包中偏向于测试的自动化工具
它能控制浏览器自动打开页面,进行一系列操作
pip install selenium
在写代码之前,要明确使用什么浏览器来打开网页,这里使用的是Chrome,
首先要下载对应版本的浏览器驱动 地址:http://chromedriver.storage.googleapis.com/index.html
检查自己chrome版本 帮助-关于chrome,查看自己chrome版本,下载对应版本的驱动,解压,放到python解释器所在的文件夹
from selenium.webdriver import Chrome web = Chrome() web.get('https://www.baidu.com')
三行代码,运行~
上面只是打开了网页,我想要操作,怎么办呢
老方法:好像语法过时了,不过暂时还能用 el = web.find_element_by_xpath('这里是你想点按钮的xpath') # 找到元素 el.click() # 点击事件 新的语法: 不过要导入By from selenium.webdriver.common.by import By el = web.find_element(by=By.XPATH, value='你想点按钮的xpath') 新的查找元素的方法 el.click()
如果你不想点击按钮,想输入内容搜索,怎么办?
from selenium.webdriver.common.keys import Keys e2 = web.find_element(by=By.XPATH, value='搜索框的xpath').send_keys('python', Keys.ENTER)
这句代码就等于 在搜索框里输入python,回车。
以上,已经能简单使用自动化工具操作浏览器了
但是做爬虫要的是网页,从中提取想要的信息
lis = web.find_elements(by=By.XPATH, value='想要的list的xpath')
到这里,等于拿到了网页源码,后面用正则、xpath,等方法匹配到想要的信息就行了
如果点击按钮跳转到新的窗口,那浏览器视角还是停留在当前窗口呀
# 获取窗口之后打开新窗口切换到新窗口 web.switch_to.window(web.window_handles[-1]) # 关闭当前窗口 web.close() # 把视角回到之前的窗口中 web.switch_to.window(web.window_handles[0])
可以手动切换浏览器窗口,已完成不用网页之间的操作,之后再关闭窗口。
不想看到浏览器弹出来,能不能让浏览器隐藏起来自己完成操作。设置无头浏览器
from selenium.webdriver.chrome.options import Options # 设置无头,不显示浏览器窗口 opt = Options() opt.add_argument("--headless") opt.add_argument("--disbale-gpu") web = Chrome(options=opt) ''' # 设置隐藏驱动浏览器 opt = Options() opt.add_argument('--disable-blink-features=AutomationControlled') '''
在Linux里使用一般都用无头的吧,我自己是用的ubuntn,有图形化界面,可以用无头,也可以不设置。
深入学习之后再补充吧!