selenium八大定位元素


1,动态数据加载的概念

1.1, 什么是动态数据加载
1.2, 动态数据加载跟爬虫有啥关系
	requests模块  
				----》它们在发起请求爬取数据的过程中,不能够执行js代码
	scrapy 框架
1.3,用到一个---->selenium是一个web端自动化测试框架

2,selenium的介绍

selenium是一个web端自动化测试框架,程序员可以通过代码来控制浏览器,比如说打开网页,关闭浏览器,点击一下,比如说拖动,向下滚动,向左右滚动
作用:帮助抓取动态加载的数据,避免反爬

3,安装与配置

安装:
1,pip install selenium
2,驱动程序:下载
	2.1,查看浏览器的版本
	2.2,选择相对应版本

4,selenium的相关的API

#编码流程
from selenium import webdriver

browser = webdriver.Chrome('./chromedriver.exe')
browser.get('https://www.baidu.com/')

#如何获取网页的元素
    browser.find_element_by_id('id值')      根据id值定位节点
    browser.find_element_by_name('name值')  根据name值定位节点
    browser.find_element_by_class_name()  根据节点class属性定位节点
    browser.find_element_by_xpath()        根据xpath定位节点
    browser.find_element_by_css_selector()  css选择器
    browser.find_element_by_link_text()    根据超文本定位
    browser.find_element_by_partial_link_text() 根据超链接文本的一部分定位

#节点交互的操作
	aa.send_keys("抖动")     #输入操作
	aa.clear()               #清空
    bb.click()                #点击
    quit()					#退出浏览器
#获取网页的源码
	browser.page_source  -->字符串-->xpath解析
#执行js的脚本
    js='window.scrollTo(0,document.body.scrollHeight)'  #滚动到一定的高度
    js="alert('啥也不是')"              #弹窗
    browser.execute_script(js)       #执行js
#子页面的跳转:
	注意: selenium 默认是父级页面
    switch_to_frame('frameid')
    switch_to_default_conent()
#防检测
	from seleniun.webdriver.chrome.options import Options
    options=Options()
    options.add_experimental_option('excludeSwitches',['enable-automation'])
#无头浏览器

5.八大定位小练习

from selenium import webdriver
import time
# 创建一个驱动
db=webdriver.Chrome()
db.get("https://www.baidu.com")
db.maximize_window()   # 最大化窗口
# # 1.id
# db.find_element_by_id("kw").send_keys("123")
# time.sleep(2)

# # 2.class
# db.find_element_by_class_name("s_ipt").send_keys("123")
# time.sleep(2)

# # 3.xpath
# db.find_element_by_xpath("//*[@id='kw']").send_keys("123")

# # 4.css
# db.find_element_by_xpath("//*[@id='kw']").send_keys("123")
# time.sleep(2)
# #5.link
# db.find_element_by_link_text("新闻").click()
# time.sleep(2)

# # 6.partial_link
# db.find_element_by_partial_link_text("新").click()
# time.sleep(2)

# # 7.tag标签唯一或者该标签在子元素的第一个   https://cn.bing.com
# db.find_element_by_tag_name("input").send_keys("123")
# time.sleep(2)

# #8.name
# db.find_element_by_name("wd").send_keys("qwe")

# # 9.clear清除
# kk=db.find_element_by_name("wd")
# kk.send_keys("qwe")
# kk.clear()

# # 窗口自动化切换
# print("------",db.window_handles)   #打印标识
# print('kkkkkk',db.current_url)     #打印地址
# db.find_element_by_link_text("hao123").click()
# db.switch_to.window(db.window_handles[1])
# print("------",db.window_handles)   #打印标识
# print('kkkkkk2',db.current_url)     #打印地址
# db.close()  #关闭第一个

# # 弹框处理
# db.find_element_by_id("s-usersetting-top").click()
# time.sleep(2)
# db.find_element_by_class_name("setpref").click()
# time.sleep(1)
# db.find_element_by_id("nr_3").click()
# time.sleep(1)
# db.find_element_by_link_text("保存设置").click()
# time.sleep(1)

下拉框

posted @ 2020-12-21 21:58  霖尤li  阅读(336)  评论(0编辑  收藏  举报