一、使用selenium的webdirver模块对浏览器进行操作
完
注意:需要安装浏览器版本对应的driver驱动
from selenium import webdriver b = webdriver.Firefox() b.get('https://www.baidu.com') #打开一个网页 print(b.title) # 打印title print(b.current_url) # 打印 url
二、webdriver模块对浏览器进行操作:元素的定位
# 根据id获取元素 ele = b.find_element_by_id("kw") ele.clear() # 清除元素内容 ele.send_keys("麦子学院") # 模拟按键输入 b.back() #返回
# 根据name获取元素 ele = b.find_element_by_name("wd") ele.clear() ele.send_keys("麦子学院")
ele = b.find_element_by_class_name("s_ipt") ele = b.find_element_by_tag_name('input') #页面中有多个input,这样查找有问题
from selenium import webdriver b = webdriver.Firefox() b.get('https://www.imooc.com/') b.maximize_window() #最大化窗口 ele = b.find_element_by_link_text("免费课程") # ele = b.find_element_by_partial_link_text("免费") #模糊查询 ele.click() #点击
b.find_element_by_css_selector() #根据css路径获取元素
from selenium import webdriver b = webdriver.Firefox() b.get('https://www.imooc.com/') ele_css = b.find_element_by_css_selector('input[type="text"]') ele_css.clear() ele_css.send_keys("python")
xpath定位元素
xpath:通过路径表达式从XML文档中选取节点或者节点位置
/xxx 选取根节点xxx
/xxx/yyy 根据绝对路径选择元素
//xxx 整个文档扫描,找到所有xxx元素
. 选取当前节点的父元素节点
.. 选取父元素地址
//xxx[@id] 选取所有xxx元素中有id属性的元素
//xxx[@id=yyy] 选取所有xxx元素id属性为yyy的元素
b.find_element_by_xpath('/html/body/form/input') #form元素下的所有inpu b.find_element_by_xpath('/html/body/form/input[1]') #根据下标定位某一个input b.find_element_by_xpath('//*[count(input=2)]') #遍历找input标签值有2个的元素
//*[count(x)=2] 统计x元素个数=2的节点
//*[local-name()='x'] 找到tag为x的元素
//*[starts-with(local-name(),'x')] 找到所有tag以x开头的元素
//*[contains(local-name(),'x')] 找到所有tag包含x的元素
//*[string-length(local-name())=3] 找到所有tag长度为3的元素
//x|//y 多个路径查找
b.find_element_by_xpath('//*[count(input=2)]/..') #遍历找input标签值有2个的元素的父节点 b.find_element_by_xpath('//form//*[contains(local-name(),"i")][last()]') #form下包含i的节点的最后一个 b.find_element_by_xpath('//form//*[contains(local-name(),"i")][last()-1]')