环境准备
- python环境已正确安装
- selenium 已安装
- 浏览器驱动已安装
如果没有完成,请看
Python中使用Selenium(一)
Selenium 语法
以下代码皆使用chrome测试通过
先看一下简单的爬虫
from selenium import webdriver
import time
def hello():
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 获得搜索框
kwInput = driver.find_element_by_id("kw")
# 在搜索框中输入内容
kwInput.send_keys("blibli")
# 查找百度一下按钮,并点击
suBtn = driver.find_element_by_id("su")
suBtn.click()
time.sleep(3)
driver.quit()
if __name__ == '__main__':
hello()
driver = webdriver.Chrome()
第一步是创建一个全新的浏览器并打开
driver.get("https://www.baidu.com/")
第二步为打开指定的网址
driver.quit()
最后一步永远为关闭浏览器
selenium 常用语法
获得元素
在阅读本部分前,最好温习一下javascript里面获得元素的方法,大部分一致
以下driver对象为 driver = webdriver.Chrome()
driver.find_element_by_id("kw")
根据id获得元素driver.find_element_by_tag_name("a")
根据标签的名称获取元素,例如a标签,div标签driver.find_elements_by_class_name("className")
根据class来获得元素driver.find_elements_by_css_selector(“#kw”)
根据css选择器获得元素driver.find_element_by_xpath(“//input[@id='kw'])
根据xpath选择器获得元素- 剩下的find_element_by_link_text 和 find_element_by_partial_link_text 不常用,可用xpath或者其他方法代替
注意事项
- find_element 和 find_elements 其中前者返回一个标签,后者返回一个数组,前者如果没有找到其中的元素会报错,后者不会报错,如果不确定返回多少元素,使用后者,然后接口len()函数进行长度判断
- xpath语法可以代替其他基本所有的语法,具体可以了解一下xpath的具体语法
元素的属性和方法
以下element对象为通过获得元素中获得的单个元素
element.click()
单击事件
element.get_attribute('name')
获得该元素的对应属性的值(常用),HTML中的元素的属性
element.get_property('name')
获得该元素的属性值(不常用),JS中元素的属性
element.text
获得该标签的内容 <div> 酸酸的果子<div>
, 例如该div为element,获得的就是酸酸的果子这五个字
element.send_keys("酸酸的果子")
向输入框中输入内容
备注
- 还有其他的属性和方法,例如id,parent等属性,还有clear() , submit(),is_displayed()等方法,只是不太常用,如果情况不一样可能会经常使用
- 在该元素可以继续使用find_element和find_elemnets等方法,会在该标签下继续查找元素,但是如果使用xpath进行查找元素,会导致不从该标签下继续查找
执行js
js='window.open("https://www.baidu.com/");'
driver.execute_script(js)
经常可能需要跳转自定义的页面,而又不能使用driver.get()方法时,可以使用该种方法跳转
对浏览器窗口的操作
handleOrigin = driver.current_window_handle
获得当前浏览器标签页的坐标
handles = driver.window_handles
获得当前浏览器标签页的所有坐标
driver.switch_to.window(handles[1])
切换当前浏览器的标签页(活动的)
driver.close()
·关闭当前标签页
driver.minimize_window()
最小化窗口
driver.maximize_window()
最大化窗口
driver.set_window_size(1280,800)
设置浏览器窗口大小
本期就到这里了,第(三)期将会更新一些特殊的爬虫操作,如果有什么疑问可以在评论区讨论