版权声明:可以转载奥 https://blog.csdn.net/Jiajikang_jjk/article/details/82940574
Selenium使用步骤解析
无关主题说明
对于一个看其他东西看不进去的时候,最好的办法就是看一些自己感觉能看的懂,能看得进去并且自己喜欢看的一些东西,这样你就会有一种停不下来的节奏。所以下午到晚上中这段时间就有了这篇博文的出现。
正文说明
Selenium是python的一个库,它是一个自动化工具,利用Selenium可以驱动浏览器执行特定的动作。比如点击,返回,下拉等操作。同时还能获取到要访问的页面的源代码,在爬虫过程中对于一些js动态渲染的页面来说,使用Selenium方式来抓取是非常好的选择。
Selenium使用分析步骤
说明:
以下是博主在学习Selenium库时的一个分析步骤,也是本文的核心所在,文中从开始获取selenium包,配置ChromeDriver驱动到最后的异常算是对于Selenium一些常用的一个分析,也是对于使用的Selenium的一个步骤的简单总结。
有些地方博主只是写出了重点,提示语,由于时间问题并没有深究,感兴趣的同学可以百度各种相关知识点,这是只是博主对于自己的总结归纳方便以后查看的一个小笔记而已!!!
selenium的用法
一:获取源码
1:安装selenium包
2:配置ChromeDriver驱动
注:
a:https://www.portablesoft.org/google-chrome-legacy-versions/ ----谷歌浏览器所以的版本
b:http://chromedriver.storage.googleapis.com/index.html ----------谷歌浏览器各个版本对应的驱动
c:C:\Users\jiajikang\AppData\Local\Google\Chrome\Application -----将解压的驱动放置在此处,然后配置到环境变量之中
d: 然后将驱动复制到python.exe同目录下
3:声明浏览器对象
browser = webdriver.Chrome();
4:然后就是调用浏览器对象
5:获取链接
6:得到网页源码:page_source
二:查找节点
1:单个节点
from selenium.webdriver.common.by import By
input_first = browser.find_element(By.ID,'q')# 获取单个节点
2:多个节点
如果在我们查找的节点在页面中只有一个,可以使用find_element()方法,但是页面中有多个节点,find_elemend()只能查找到第一个
所以就要使用:find_elements()
input_second = browser.find_elements_by_css_selector('.service-bd li')# 获取多个节点
find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
input_second = browser.find_elements(B_CSS_SELECTOR,'.service-bd li')# 获取多个节点
三:节点交互
简单就是:使浏览器模拟执行一些动作
1: 输入文字: send_keys()
2: 清空文字:clear()
3: 点击按钮: click()
input_first = browser.find_element(By.ID,'q')# 获取单个节点
# input_second = browser.find_elements_by_css_selector('.service-bd li')# 获取多个节点
# 第一次输入
input_first.send_keys('iphone')
time.sleep(1)
input_first.clear()
# 第二次输入
input_first.send_keys('ipad')
button = browser.find_elements_by_class_name('btn-search')
button.click()
四:动作链and执行js
1: drag_and_drop()
perform()
2:execute_script()
五:获取节点信息(解析)
1:获取属性
from selenium import webdriver # 驱动
from selenium.webdriver import ActionChains
browser = webdriver.Chrome()# 谷歌浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url)
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))# 获取属性名
2:获取文本
browser = webdriver.Chrome()# 谷歌浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.text)
3:获取id,位置,标签名和大小
browser = webdriver.Chrome()# 谷歌浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)
六:切换Frame
switch_to.frame()
七:延时等待
1: 隐式等待
browser = webdriver.Chrome()# 谷歌浏览器
browser.implicitly_wait(10)
2: 显示等待
from selenium.webdriver.support.ui import WebDriverWait
wait = WebDriverWait(browser,10)
八:前进和后退
back(),forward()
import time
from selenium import webdriver # 驱动
borwser = webdriver.Chrome()
borwser.get('https://www.baidu.com/')
borwser.get('https://www.taobao.com/')
borwser.get('https://www.python.org/')
borwser.back()
time.sleep(1)
borwser.forward()
borwser.close()
九:异常处理
try...except
from selenium import webdriver
from selenium.common.exceptions import TimeoutException,NoSuchElementException
browser = webdriver.Chrome()
try:
browser.get('https://www.baidu.com')
except TimeoutException:
print("超时")
try:
browser.find_element_by_id('hello')
except NoSuchElementException:
print("没有这样的元素")
finally:
browser.close()