jjddrushi 2020-01-10
一、selenium概念
1、用来完成浏览器自动化的相关操作
2、使用程序编写一系列的键盘、鼠标的相关操作(让浏览器来完成), 当我们执行代码时,就会触发一系列的事件
二、selenium在爬虫中的作用
1、可以获取动态加载的数据
三、selenium安装
1、pip install selenium
2、下载浏览器驱动程序: http://chromedriver.storage.googleapis.com/index.html (找到最接近的版本)
四、selenium使用
1、导包: from selenium import webdriver
2、实例化某一款浏览器的驱动,获取一个对象
3、使用对象中的相关方法制定一系列的事件(键盘、鼠标的相关操作)
五、简单案例,打开百度
from selenium import webdriver bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘) bro.get("https://www.baidu.com") bro.close()
六、自动打开百度,搜素刘德华
# 百度搜索刘德华案例 import time from selenium import webdriver bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘) bro.get("https://www.baidu.com") # 1. 定位到输入框 kw = bro.find_element_by_id("kw") # 2. 键入刘德华关键字 kw.send_keys("刘德华") time.sleep(5) # 3. 定位到"百度一下"按钮 input_key = bro.find_element_by_id("su") # 4. 触发点击事件 input_key.click() time.sleep(5) bro.close()
七、爬取雪球网
from selenium import webdriver bro = webdriver.Chrome(‘./chromedriver.exe‘) bro.get(‘https://xueqiu.com‘) # 获取动态加载的数据 print(bro.page_source) bro.quit()
八、爬取雪球网的更多数据
import time from selenium import webdriver bro = webdriver.Chrome(‘./chromedriver.exe‘) bro.get(‘https://xueqiu.com‘) js = "window.scrollTo(0, document.body.scrollHeight)" # 表示滚轮往下拖动一屏的高度 bro.execute_script(js) time.sleep(2) bro.execute_script(js) time.sleep(2) bro.execute_script(js) time.sleep(2) bro.execute_script(js) time.sleep(2) # 获取动态加载的数据 print(bro.page_source) bro.quit()
九、谷歌无头浏览器
import time from selenium import webdriver from selenium.webdriver.chrome.options import Options # 创建一个参数对象,用来控制chrome以无界面模式打开 chrome_options = Options() chrome_options.add_argument(‘--headless‘) chrome_options.add_argument(‘--disable-gpu‘) bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘, chrome_options=chrome_options) bro.get("https://www.baidu.com") # 截图 bro.save_screenshot(‘3.jpg‘) # 1. 定位到输入框 kw = bro.find_element_by_id("kw") # 2. 键入刘德华关键字 kw.send_keys("刘德华") time.sleep(2) # 3. 定位到"百度一下"按钮 input_key = bro.find_element_by_id("su") # 4. 触发点击事件 input_key.click() # 截图 bro.save_screenshot(‘4.jpg‘) time.sleep(2) bro.close()
十、前进和后退
import time from selenium import webdriver bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘) # 注意: bro对象只有将页面完全加载完成之后,才会进行下一步的事件触发 bro.get("https://www.baidu.com") bro.get("https://www.taobao.com") bro.get("https://www.jd.com") time.sleep(2) # 后退 bro.back() time.sleep(2) # 前进 bro.forward() time.sleep(2) bro.close()
十一、动作链。拖动iframe标签
import time from selenium import webdriver from selenium.webdriver import ActionChains bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘) bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable") # 定位到页面中的iframe标签内部,这样才可以定位到它内部的标签 bro.switch_to.frame("iframeResult") # 实例化一个动作链对象,将浏览器对象加载到这个动作链对象中 actions = ActionChains(bro) # 1. 定位“请拖拽我”标签 source_tag = bro.find_element_by_id("draggable") # 2. 点击“请拖拽我”, 并拖动 actions.click_and_hold(source_tag) for i in range(1, 6): actions.move_by_offset(50,0) time.sleep(1) actions.perform() # 执行所有动作链 time.sleep(2) bro.close()
十二、动作链,拖动iframe标签到指定的地方
import time from selenium import webdriver from selenium.webdriver import ActionChains bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘) bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable") # 定位到页面中的iframe标签内部,这样才可以定位到它内部的标签 bro.switch_to.frame("iframeResult") # 实例化一个动作链对象,将浏览器对象加载到这个动作链对象中 actions = ActionChains(bro) # 1. 定位“请拖拽我”标签 source_tag = bro.find_element_by_id("draggable") target_tag = bro.find_element_by_id(‘droppable‘) # 点击并拖动,并丢弃 actions.click_and_hold(source_tag) for i in range(1, 6): actions.move_by_offset(30,0) time.sleep(1) actions.drag_and_drop(source_tag, target_tag) actions.perform() # 执行所有动作链 bro.close()
十三、获取cookie
from selenium import webdriver from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptions option = ChromeOptions() option.add_experimental_option(‘excludeSwitches‘, [‘enable-automation‘]) browser = webdriver.Chrome(‘./chromedriver.exe‘, options=option) browser.get(‘https://www.baidu.com‘) print(browser.get_cookies()) # browser.add_cookie({‘name‘: ‘name‘, ‘domain‘: ‘www.zhihu.com‘, ‘value‘: ‘germey‘}) # print(browser.get_cookies()) # browser.delete_all_cookies() # print(browser.get_cookies())
5.环境变量配置在linux系统下,需要将可执行文件配置到环境变量或将文件移动到属于环境变量的目录里面方法一:将文件移动到属于环境变量目录中sudo mv chromedriver /user/bin