selenium库的基本使用和chromedriver安装
1、获取ajax数据的方式
- 直接分析ajax调⽤的接⼝。然后通过代码请求这个接口。
- 使⽤Selenium+chromedriver模拟浏览器行为获取数据。
| 方式 | 优点 | 缺点 |
|---|---|---|
| 分析接口 | 直接可以请求到数据。不需要做⼀些解析⼯作。代码量少,性能高 | 分析接⼝⽐较复杂,特别是⼀些通过js混淆的接⼝,要有⼀定的js功底。容易被发现是爬虫。 |
| selenium | 直接模拟浏览器的行为。浏览器能请求到的,使⽤selenium也能请求到。爬⾍更稳定。 | 代码量多。性能低。 |
2、Selenium+chromedriver获取动态数据
selenium是⼀个web的⾃动化测试⼯具,最初是为⽹站⾃动化测试⽽开发的,selenium可以直接运⾏在浏览器上,它⽀持所有主流的浏览器,可以接收指令,让浏览器⾃动加载⻚⾯,获取需要的数据,甚⾄⻚⾯截屏。
chromedriver是⼀个驱动Chrome浏览器的驱动程序,使⽤他才可以驱动浏览器。当然针对不同的浏览器有不同的driver。
3、下载chromedrive
ChromeDriver 镜像: https://npmmirror.com/mirrors/chromedriver/
1、安装Selenium和chromedriver
- 安装Selenium:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
2.安装chromedriver:
下载完成后,将chromedriver.exe放在谷歌浏览器安装目录下和python.exe的目录下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahSkjOuP-1681285156618)(en-resource://database/5127:1)]
4、Selenium案例
from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 发送请求
driver.get('https://www.baidu.com')
# 退出浏览器
driver.quit()
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
if __name__ == '__main__':
driver = webdriver.Firefox()
driver.set_window_position(x=50,y=60)
driver.set_window_size(width=1366, height=700)
driver.get("http://www.python.org")
print driver.title
driver.close()
- 首先实例化一个Chrome WebDriver对象。
- 之后,driver.set_window_position方法来设置浏览器窗口的起始位置(就是浏览器左上角的坐标位置)
- driver.set_window_size用来设置浏览器窗口的大小。
- 重点的dirver.get()方法,用来导航到给定的url地址的网页。WebDriver 将会等待直到页面全部加载完成后才会把控制权返回给脚本。
- 最终,浏览器窗口关闭。当然,你也可以调用driver.quit()方法来结束浏览器调用,两个方法的不同之处在于,close()方法是关闭当期的浏览器窗口,而quit()方法是退出整个浏览器。
5、定位元素
1、find_element_by_id:根据id来查找某个元素。
submitTag = driver.find_element_by_id('su')
submitTag1 = driver.find_element(By.ID,'su')
2、find_element_by_class_name:根据类名查找元素。
submitTag = driver.find_element_by_class_name('su')
submitTag1 = driver.find_element(By.CLASS_NAME,'su')
3、find_element_by_name:根据name属性的值来查找元素。
submitTag = driver.find_element_by_name('email')
submitTag1 = driver.find_element(By.NAME,'email')
4、find_element_by_tag_name:根据标签名来查找元素。
submitTag = driver.find_element_by_tag_name('div')
submitTag1 = driver.find_element(By.TAG_NAME,'div')
5、find_element_by_xpath:根据xpath语法来获取元素。
submitTag = driver.find_element_by_xpath('//div')
submitTag1 = driver.find_element(By.XPATH,'//div')
6、find_element_by_css_selector:根据css选择器选择元素。
submitTag = driver.find_element_by_css_selector('//div')
submitTag1 = driver.find_element(By.CSS_SELECTOR,'//div')
要注意,find_element是获取第⼀个满⾜条件的元素。find_elements是获取所有满⾜条件的元素。
6、操作表单元素
操作输⼊框:分为两步。
第⼀步:找到这个元素。
第⼆步:使⽤send_keys(value),将数据填充进去。
inputTag = driver.find_element_by_id('kw')
inputTag.send_keys('python')
使⽤clear⽅法可以清除输⼊框中的内容。
inputTag.clear()
操作checkbox:因为要选中checkbox标签,在⽹⻚中是通过⿏标点击的。因此想要选中checkbox标签,那么先选中这个标签,然后执⾏click事件。
rememberTag = driver.find_element_by_name("rememberMe")
rememberTag.click()
操作按钮:操作按钮有很多种⽅式。⽐如单击、右击、双击等。这⾥讲⼀个最常⽤的。就是点击。直接调⽤click函数就可以了。
inputTag = driver.find_element_by_id('su')
inputTag.click()
选择select:select元素不能直接点击。因为点击后还需要选中元素。这时候selenium就专⻔为select标签提供了⼀个类.
selenium.webdriver.support.ui.Select。将获取到的元素当成参数传到这个类中,创建这个对象。以后就可以使⽤这个对象进⾏选择了。
更多推荐
所有评论(0)