首页 > 编程语言 >Python爬虫学习-seleuim交互

Python爬虫学习-seleuim交互

时间:2022-11-26 17:03:03浏览次数:64  
标签:webdriver Python button selenium 爬虫 value seleuim brower find

Selenium

1.selenium的安装

  • 操作edge浏览器驱动下载地址(注意要和edge浏览器版本保持一致)

https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

  • pycharm下载selenium

pip install selenium

2.selenium的使用步骤

(1) 导入 :from selenium import webdriver

(2) 创建edge浏览器操作对象

# 创建浏览器操作对象
path = 'msedgedriver.exe'
# 尝试传参
s = Service(path)
brower = webdriver.Edge(service=s)

(3) 访问网址

url = 'https://www.jd.com/'
brower.get(url)

# page_source获取网页源码
content = brower.page_source

(4) 元素定位

统一方法:find_element(by = '', value = '')

分类:
1.根据id来找tag对象
button = brower.find_element(by="id",value="su")
2.使用xpath解析获得tag对象
button = brower.find_element(by='xpath',value='//input[@id="su"]')
3.根据链接文本获得tag对象
button = brower.find_element(by='link text',value='视频')
4.根据标签属性的属性值获得tag对象
button = brower.find_element(by='name',value='wd')
5.根据标签的名字(注意返回一个列表)获得tag对象
button = brower.find_elements(by='tag name',value='input')

(5) 元素信息

1.获得元素属性: get_attribute('class')
eg.button = brower.find_element(by="id",value="su")
   print(button.get_attribute('class'))
    
2.获得元素文本: text
eg.button = brower.find_element(by="link text",value="视频")
   print(button.text)
    
3.获得标签名: tag_name
eg.button = brower.find_element(by="id",value="su")
   print(button.tag_name)

(6) 交互

1.点击:click()
2.输入:send_keys()
3.后退操作:brower.back()
4.前进操作:brower.forward()
5.模拟JS滚动:
js_buttom = 'document.documentElement.scrollTop=100000'
brower.execute_script(js_buttom) 执行js代码
6.获取网页代码:page_source
7.退出:brower.quit()

案例:实现搜索与翻页自动化

from selenium import webdriver
import time
from selenium.webdriver.edge.service import Service

# 创建浏览器对象
path = 'msedgedriver.exe'
s = Service(path)
brower = webdriver.Edge(service=s)

url = 'https://www.baidu.com'
brower.get(url)

# sleep参数单位是秒
time.sleep(2)

# 获取文本框的对象
input = brower.find_element(by="id", value='kw')
# 在文本框中输入周杰伦
input.send_keys('周杰伦')
time.sleep(2)
# 获取百度一下的按钮
button = brower.find_element(by="id", value="su")
# 点击按钮
button.click()
time.sleep(2)

# 滑到底部
js_buttom = 'document.documentElement.scrollTop=100000'
brower.execute_script(js_buttom)
time.sleep(2)

# 获取下一页的按钮
next = brower.find_element(by='xpath', value='//a[@class="n"]')
# 点击下一页
next.click()
time.sleep(2)

# 回到上一页
brower.back()
time.sleep(2)
# 回去
brower.forward()
time.sleep(3)
# 退出
brower.quit()

3.Edge headless

可以使用 EdgeOptions 配置将在创建会话时传递给 Microsoft Edge 浏览器进程的命令行参数。 例如,可以将浏览器配置为在无外设模式下运行。(在不打开UI界面的情况下使用Edge浏览器)

具体可以在官方文档:https://docs.microsoft.com/zh-cn/microsoft-edge/webdriver-chromium/?tabs=python中查看

from selenium import webdriver
from selenium.webdriver.edge.options import Options

options = Options()
options.add_argument("headless")

driver = webdriver.Edge(options = options)

举例:浏览器截图

# 可以将浏览器配置为在无外设模式下运行。
from selenium import webdriver
from selenium.webdriver.edge.options import Options

def share_brower():
    options = Options()
    options.add_argument("headless")
    brower = webdriver.Edge(options=options)
    return brower

brower = share_brower()
url = 'https://www.baidu.com'
brower.get(url)
# 页面截图
brower.save_screenshot('baidu.png')

标签:webdriver,Python,button,selenium,爬虫,value,seleuim,brower,find
From: https://www.cnblogs.com/epochal/p/lucky.html

相关文章

  • PYTHON_not in
    1.移除列表中的多个元素。例如:原始列表:[1,2,3,4]移除列表:[1,2]返回:[3,4]#方法一:remove()函数#直接移除就行,不用逐个判断,不会报错l=[1,2,3,4]l_remove=[1,2]forein......
  • 【Amadeus原创】python读取pdf
    1.vscode安装python插件2.vscode终端安装pdfminer.six,pdfplumber​​python-mpipinstallpdfminer.six​​​​python-mpipinstallpdfplumber​​3.在代码目......
  • 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)
    题目:已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,......
  • python(牛客)试题解析3 - 困难
    导航一、找到已经最大承重的背包内如何放入最大价值的物品的最优解二、查找一个字符串中包含另外一个字符串(可打乱顺序)的次数三、计算正整数数组从头走到最后一个成员......
  • Python基础(三)
    Python基础(三)正则表达式import re#match 从开头位置匹配,失败返回NULLresult = re.match("^[a-z0-9]*@(sina|qq|126|136)\.com$","[email protected]")print("true","matc......
  • Python数据分析与科学计算之NumPy超细教程之第1部分 NumPy简介
    1.学习NumPy前置知识点1、Python基础语言2、重点Python内置数据结构:列表(list)、字符串(str)、元组(tuple)、集合(set)和字典(dict)。3、序列的索引和切片操作。4、列表推导式、集合推......
  • Python中创建类的六重境界
    1.引言大家首先需要记住一句话:类是模板,而实例则是根据类创建的对象。在面向对象编程语言中,类class最为常见。为此,本文重点来介绍在Python中创建类的六重境界。闲话少说,我......
  • python实现输出文件夹的目录树结构
    最近清理QQ文件夹的时候,发现群聊图片巨TM大,就想看看群友们都发了什么怪图片但是QQ群聊图片文件夹里面的文件夹是一个套一个,靠手工copy肯定是不太行的,就写了个简单......
  • python 离线安装项目所有库及依赖
     1. 将本地所有库名称写入一个txtpipfreeze> d:\requirements.txt2.将txt所有库名称,打包下载到本地pipdownload -d d:\res\-rrequirements.txt  3. 将库复制......
  • 使用VSccde上传文件到Git时报错:fatal:Custom certificate bundle not found at path:
    问题原因错误分析:这个是本地下载的Git没有在里面安装好证书导致的,所以要卸载git重新安装Git就会自动安装证书解决方法我们需要在控制面板>用户账户>凭据管理器>Windows凭......