天天看点

python使用selenium的webdriver解析网页,获取一个或者多个标签,selenium获取豆瓣数据以及selenium的元素定位类型使用背景注意点和小技巧简单使用seleniumselenium获取豆瓣数据以及selenium的元素定位类型

目录

  • 使用背景
  • 注意点和小技巧
    • 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 ')
           
python使用selenium的webdriver解析网页,获取一个或者多个标签,selenium获取豆瓣数据以及selenium的元素定位类型使用背景注意点和小技巧简单使用seleniumselenium获取豆瓣数据以及selenium的元素定位类型

使用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]')
           
python使用selenium的webdriver解析网页,获取一个或者多个标签,selenium获取豆瓣数据以及selenium的元素定位类型使用背景注意点和小技巧简单使用seleniumselenium获取豆瓣数据以及selenium的元素定位类型
python使用selenium的webdriver解析网页,获取一个或者多个标签,selenium获取豆瓣数据以及selenium的元素定位类型使用背景注意点和小技巧简单使用seleniumselenium获取豆瓣数据以及selenium的元素定位类型

无头使用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)