目录
- 使用背景
- 注意点和小技巧
-
- elements和element的区别
- 使用selenium的xpath方法的网页快速复制
- 无头使用webdriver的方法:
- 简单使用selenium
- selenium获取豆瓣数据以及selenium的元素定位类型
使用背景
从效率来讲,能用request模块得到响应是最好的,但有时候使用request得到的东西并不是自己想要的东西(搞不定),或者说想解析但是比较复杂,在这种情况下就会使用selenium
注意点和小技巧
elements和element的区别
- 使用element元素定位方法时,注意自己找到元素是多个值还是一个值,如果是多个值但只写了和element相关的语法,只会输出找到的第一个元素,注意element是否有s
# 获取单个标签
element = dr.find_element_by_id('s-top-left')
# 获取多个标签
element_a = dr.find_elements_by_css_selector('#s-top-left ')
使用selenium的xpath方法的网页快速复制
- 使用selenium的xpath方法时,可以直接复制网页中的元素,简单快捷方法为:选中元素,右键——copy——copy Xpath,输入好方法后,直接复制
# 添加前
element_x = dr.find_elements_by_xpath('')
# 添加后
element_x = dr.find_elements_by_xpath('//*[@id="anony-time"]/div/div[3]/ul/li[4]/a[2]')
无头使用webdriver的方法:
# 以下代码可以使浏览器取消可视化(即不弹出浏览自动操作),简称“无头浏览器”
chrome_option = Options()
chrome_option.add_argument('--headless')
chrome_option.add_argument('--disable-gpu')
# options控制浏览器是否可视化(即是否是无头浏览器)
dr = webdriver.Chrome(options=chrome_option) # 切换至除qq输入法以外的其他输入法再运行
简单使用selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建浏览器对象
# 以下代码可以使浏览器取消可视化(即不弹出浏览自动操作),简称“无头浏览器”
# chrome_option = Options()
# chrome_option.add_argument('--headless')
# chrome_option.add_argument('--disable-gpu')
# options控制浏览器是否可视化(即是否是无头浏览器)
dr = webdriver.Chrome() # 切换至除qq输入法以外的其他输入法再运行
# 1 发送请求
dr.get('https://www.baidu.com/')
# 2 保存快照
dr.save_screenshot('baidu1.png')
# jpg格式 和png区别 :png无损,jpg有损
# 3 查看网页代码
# print(dr.page_source)
# 4 获取标签
element = dr.find_element_by_id('s-top-left')
# print(element)
# 获取多个标签
element_a = dr.find_elements_by_css_selector('#s-top-left a')
# print('element_a:',element_a)
# 5 获取标签包裹的内容
print(element_a[0].text)
# 6 获取标签的属性
print('href:',element_a[2].get_attribute('href'))
# 7 关闭
# 退出当前页面 不关闭浏览器
dr.close()
# 关闭浏览器
# dr.quit()
selenium获取豆瓣数据以及selenium的元素定位类型
'''
id
class
name
text
取属性的值
通过文本来获取数据
模糊查找
'''
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 启用无头浏览
option = Options()
option.add_argument('--headless')
# 启动
dr = webdriver.Chrome(options=option)
url = 'https://www.douban.com/'
# 发送请求
dr.get(url)
# name
# element_name = dr.find_element_by_name('keywords')
# print(element_name)
# print(element_name.get_attribute('content'))
# id
# element_id = dr.find_elements_by_id('anony-nav')
# print(element_id)
# class_name
# element_class = dr.find_element_by_class_name('lnk-book')
# print(element_class.text)
# xpath 语法//@[]/div
# element_x = dr.find_elements_by_xpath('//*[@id="anony-time"]/div/div[3]/ul/li[4]/a[2]')
# print('======================\n')
# print(element_x[0].text)
# print(element_x[0].get_attribute('href'))
# 标签
# element_tag = dr.find_elements_by_tag_name('h1')
# print('======================\n')
# print(element_tag)
# print(element_tag.get_attribute('href'))
# 通过text查找数据
# element_text = dr.find_element_by_link_text('豆瓣小组')
# print(element_text.get_attribute('href'))
# 模糊查找
element_re = dr.find_elements_by_partial_link_text('豆瓣')
print('======================\n')
# print(element_re)
print(len(element_re))
for name in element_re:
print(name.text)