简介
- 是一个基于浏览器自动化的模块。它比requests模块的爬取效率低很多
- 帮我们便捷的爬取到页面中动态加载出来的数据
- 模拟登陆
- 安装: pip install selenium
- 下载对应的驱动程序。 http://chromedriver.storage.googleapis.com/index.html
百度搜索美女
- 通过find系列的方法,定位到标签
- 若window.navigator.webdriver的返回值为undifunde,则没有反sele机制
from selenium import webdriver
from time import sleep
#火狐浏览器用法
driver = webdriver.Firefox()
#谷歌浏览器用法
# driver = webdriver.Chrome(executable_path='./chromedriver.exe')
driver.get("https://www.baidu.com/")
sleep(1)
#find_element_by_id 定位 id=kw 的标签 ,send_keys 输入内容
driver.find_element_by_id('kw').send_keys('美女')
sleep(1)
# 定位 id=su 的标签, click 点击
driver.find_element_by_id('su').click()
sleep(1)
# find_elements_by_link_text 通过链接文本查找元素,click点击
driver.find_elements_by_link_text('美女_百度图片')[0].click()
sleep(1)
# 关闭浏览器
driver.quit()
# 关闭浏览器
列举常见的selenium模块的方法及其作用
- get(url)
- find系列的函数进行标签定位
- send_keys(‘key’)
- click()
- excute_script(‘jsCode’)注入 js 语句
- page_source #获取 htm 代码
- switch_to.frame('iframeID') #若节点被包含在iframes节点之中的,则必须使用switch_to进行frame的切换
- quite()
- save_screenshot()
- a = ActionChains(bro)
- a.click_and_hold('tag') #点击并按住
- tag.move_by_offset(x,y).perform() #根据坐标进行移动,perform 是立即执行
截图操作
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless') # 无头
chrome_options.add_argument('--disable-gpu')
br = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options)
br.set_window_size(1050, 1430)
def _pic(name):
br.get('file:///Users/gaowangli/Desktop/other/test.htm')
# 截取当前窗口,并指定截图图片的保存位置
path = './%s.png' % (name)
br.get_screenshot_as_file(path) # 截图操作
br.quit()
if __name__ == '__main__':
name = 'test'
_pic(name)