selenium基础操作
'''
selenium基础操作
'''
from selenium import webdriver
#1、创建一个驱动
# driver = webdriver.PhantomJS()#无界面的
driver = webdriver.Chrome()# 有界面的
# driver = webdriver.Firefox()# 火狐浏览器也支持selenium
#2、请求url
driver.get('http://www.baidu.com/')
#3可以通过dirver对象对页面进行一些操作。
#获取页面元素
'''
driver.find_element_by_id()#通过id属性查找
driver.find_element_by_xpath()#通过xpath路径查找
driver.find_element_by_css_selector()#通过css选择器查找
'''
input_ = driver.find_element_by_id('kw')
print(input_)#WebElement 对象
#WebElement 对象可以做的事情
input_.send_keys(u'python爬虫')
#查看元素的位置
# print(input_.location)
#查看元素大小
# print(input_.size)
#截屏
driver.save_screenshot('befor_click.png')
#点击
driver.find_element_by_xpath('//*[@id="form"]/span[2]').click()
driver.close()#关闭选项卡
driver.quit()#关闭浏览器
显示等待
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC#seleniunm内置一些条件
from selenium.webdriver.common.by import By
def get_content_by_selenium(self,url):
#1,创建驱动
# driver = webdriver.PhantomJS()
#2请求url
self.driver.get(url)
#3、等待
#强制等待:弊端:死板,而且有的时候还可能等待不够,造成数据的缺失
# time.sleep(3)
#隐式等待:相当于页面在等待到转圈圈结束,页面完全加载出来位置。
#弊端:等待的还是太久了。
# driver.implicitly_wait(10)#10秒钟还没有全部加载完成的话,就会报超时异常
#显示等待:可以聚焦到页面中特定元素出现就等待结束。
# 使用显示等待步骤
#(1)、创建等待对象
# 20:显示等待的最大等待时长,20秒还没等待到特定元素加载出来,就报一个超时异常
#driver:表示这个等待对象监听到那个驱动浏览器程序上
wait = WebDriverWait(self.driver,20)
# (2)用wait对象来进行条件判断
'''
EC.presence_of_element_located(定位器)
定位器是一个元祖(用什么定位器:id,xpath,css,'对应的选择器的语法')
'''
wait.until(EC.presence_of_element_located((By.XPATH,'//div[@id="root"]')))#等到啥时候为止
#4、获取页面内容
return self.driver.page_source
来源:CSDN
作者:weixin_45160228
链接:https://blog.csdn.net/weixin_45160228/article/details/104365198