webdriver 提供了一系列的元素定位方法,常用的有以下几种:
find_element_by_id() # 通过元素ID定位 find_element_by_name() # 通过元素Name定位 find_element_by_class_name() # 通过类名定位 find_element_by_tag_name() # 通过元素TagName定位 find_element_by_link_text() # 通过文本内容定位 find_element_by_partial_link_text() find_element_by_xpath() # 通过Xpath语法定位 find_element_by_css_selector() # 通过选择器定位
注意
1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。
2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。
3、另外,Selenium还提供了通用方法find_element()
,它需要传入两个参数:查找方式By
和值。实际上,它就是find_element_by_id()
这种方法的通用函数版本,比如find_element_by_id(id)
就等价于find_element(By.ID, id)
,二者得到的结果完全一致。
举例:
"""selenium定位元素的方法""" from selenium import webdriver import time driver_path = r"D:\install\chromedriver\chromedriver.exe" # 创建浏览器对象(句柄) driver = webdriver.Chrome(executable_path = driver_path) driver.get(‘https://www.baidu.com/‘) # print(driver.page_source) # inputTag = driver.find_element_by_id(‘kw‘) # inputTag = driver.find_element_by_name(‘wd‘) # inputTag = driver.find_element_by_class_name(‘s_ipt‘) inputTag = driver.find_element_by_xpath("//input[@id=‘kw‘]") # inputTag = driver.find_element_by_css_selector(".quickdelete-wrap > input") inputTag.send_keys(‘python‘)
1.如果是想要对元素进行一些操作,比如给一个文本框输入值,或者是点击某个按钮,那么就必须使用selenium给我们提供的查找元素的方法。
2.如果只是想要解析网页中的数据,推荐将网页源代码扔给lxml来解析。因为lxml底层使用的是C语言,所以解析效率更高
通过page_source
属性可以获取网页的源代码,接着就可以使用解析库(如正则表达式、Beautiful Soup、pyquery等)来提取信息了。
from selenium import webdriver import time driver_path = r"D:\install\chromedriver\chromedriver.exe" # 创建浏览器对象(句柄) driver = webdriver.Chrome(executable_path = driver_path) driver.get(‘https://www.baidu.com/‘) # print(driver.page_source) # 获取网页源码 page_text = driver.page_source with open("jd.html", "w", encoding="utf-8") as fp: fp.write(page_text) time.sleep(2) # 关闭浏览器 driver.quit()
原文:https://www.cnblogs.com/sruzzg/p/13166588.html