selenium的用法

Posted youhongliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium的用法相关的知识,希望对你有一定的参考价值。

一、selenium概念

  用来完成浏览器自动化的相关操作

  使用程序编写一系列的键盘、鼠标的相关操作(让浏览器来完成), 当我们执行代码时,就会触发一系列的事件

二、selenium在爬虫中的作用

  可以获取动态加载的数据

三、selenium安装

  pip install selenium

  下载浏览器驱动程序: http://chromedriver.storage.googleapis.com/index.html (找到最接近的版本)

四、selenium使用

  导包: from selenium import webdriver

  实例化某一款浏览器的驱动,获取一个对象

  使用对象中的相关方法制定一系列的事件(键盘、鼠标的相关操作)

五、自动访问百度

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()

九、phantomJS

# phantomJS
import time
from selenium import webdriver

bro = webdriver.PhantomJS(./phantomjs.exe)
bro.get("https://www.baidu.com")

# 截图
bro.save_screenshot(11.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(21.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()

十一、动作链(一)

# 动作链
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()

十二、动作链(二)

# 动作链
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

# 获取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())

 

以上是关于selenium的用法的主要内容,如果未能解决你的问题,请参考以下文章

selenium的用法

Selenium用法详解上传下载JAVA爬虫

python selenium片段+网络驱动程序

Selenium用法详解浏览器控制JAVA爬虫

Selenium用法详解浏览器控制JAVA爬虫

Java + selenium Timeout接口用法介绍