通过selenium的使用可以驱动浏览器来模拟加载网页,简单定位元素和获取对应的数据:
(1)find_elements_by_id # 根据id属性值获取元素列表
(2)find_elements_by_class_name # 根据类名获取元素列表
(3)find_elements_by_tag_name # 根据标签名获取元素列表
(4)find_elements_by_css_selector # 根据CSS选择器获取元素列表
(5)find_elements_by_xpath # 返回一个包含元素的列表
(6)find_elements_by_partial_link_text # 根据标签包含的文本获取元素列表,模糊定位
注意:若上述方法中的elements去掉 s ,就会返回单个元素
from selenium import webdriver
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('https://www.douban.com/')
# 1.通过标签的id值获取单个标签
task1 = driver.find_element_by_id('anony-nav') # 返回值为标签对象
print(task1)
# 2.通过标签的id值获取多个标签
task2 = driver.find_elements_by_id('anony-nav') # 返回值为包含多个标签对象的list
print(task2)
# 3.通过标签的class属性值获取标签
task3 = driver.find_elements_by_class_name('anony-nav-links') # 返回值为标签对象的list
print(task3)
# 4.通过Xpath获取左上角豆瓣图片的<a>标签
task4 = driver.find_elements_by_xpath('//*[@id="anony-nav"]/h1/a') # 返回值为标签对象的list
print(task4)
# 5.通过标签包裹的文本“下载豆瓣 APP”获取元素列表(精确定位)
task5 =driver.find_element_by_link_text('下载豆瓣 App') # 返回值为标签对象
print(task5)
# 6.通过标签包裹的文本“豆瓣”获取元素列表(模糊定位)
task6 = driver.find_elements_by_partial_link_text('豆瓣')
print(len(task6))
# 7.通过标签名获取元素列表
task7 = driver.find_elements_by_tag_name('div')
print(len(task7))
# 8.获取<h1>标签包裹的文本内容
task8 = driver.find_element_by_tag_name('h1')
print(task8.text)
# 9.通过标签包裹的文本“下载豆瓣 App”获取期href属性值
task9 = driver.find_element_by_link_text('下载豆瓣 App')
print(task9.get_attribute('href'))
driver.close()
driver.quit()
获取标签的通用方法:
1 from selenium.webdriver.common.by import By
2
3 result = driver.find_element(By.ID, 'q')