selenium基本使用、无头浏览器(chrome浏览器)、搜索标签

news/2024/7/19 9:28:31 标签: selenium, 测试工具, python, 爬虫

selenium_0">selenium基本使用

这个模块:既能发请求,又能解析,还能执行js

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行
JavaScript代码的问题

  1. selenium 会做web方向的自动化测试
  2. appnium 会做 app方向的自动化测试

selenium 可以操作浏览器,模拟人的 行为

使用浏览器

  1. 下载浏览器驱动(chrome):

    • https://registry.npmmirror.com/binary.html?path=chromedriver/
    • https://googlechromelabs.github.io/chrome-for-testing/
    • https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/119.0.6045.105/win64/chromedriver-win64.zip
    • 火狐驱动:https://github.com/mozilla/geckodriver/releases/
    • 跟浏览器型号和版本一一对应的
      ie,火狐,谷歌:谷歌为例
      谷歌浏览器有很多版本:跟版本一一对应
  2. 将驱动放到python解释器目录下,或者配置环境变量

  3. 下载模块:pip install selenium

  4. python代码,操作浏览器

python">import time
from selenium import webdriver

# 跟人操作浏览器一样,打开了谷歌浏览器,拿到浏览器对象
bro=webdriver.Firefox()

# 在地址栏中输入地址
bro.get('https://www.baidu.com')
time.sleep(5)
bro.close()

指令

bro为实例化所得对象

  1. 在地址栏中输入地址:bro.get('网址地址')
  2. 关闭浏览器:bro.close()
  3. 设置等待:bro.implicitly_wait(10),从页面中找标签,如果找不到,就等待
  4. 页面最大化:bro.maximize_window()
  5. 当前页面html内容:bro.page_source)
  6. 选择器:
    from selenium.webdriver.common.by import By
    • 找一个:bro.find_element(by=By.选择器,value='')
    • 找所有:bro.find_elements(by=By.选择器,value='')
  7. 点击:找到的标签.click()
  8. 文本框写入:找到的标签.send_keys()

模拟登录

python">from selenium import webdriver
from selenium.webdriver.common.by import By

bro = webdriver.Firefox()
bro.get('https://www.baidu.com')
bro.implicitly_wait(10)
bro.maximize_window()

# 找到登录按钮
a_login = bro.find_element(by=By.LINK_TEXT, value='登录')
a_login.click()

# 往输入框中写文字
username = bro.find_element(by=By.ID, value='TANGRAM__PSP_11__userName')
username.send_keys('13437238745')
password = bro.find_element(by=By.ID, value='TANGRAM__PSP_11__password')
password.send_keys('caimina1')

agree = bro.find_element(By.ID, 'TANGRAM__PSP_11__isAgree')
agree.click()

submit = bro.find_element(By.ID, 'TANGRAM__PSP_11__submit')
submit.click()

bro.close()

selenium_83">selenium其它用法

无头浏览器(chrome浏览器)

如果我们做爬虫,我们只是为了获取数据,不需要非有浏览器在显示 ⇢ \dashrightarrow 隐藏浏览器图形化界面

python">import time

from selenium import webdriver
from selenium.webdriver.common.by import By


from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
bro = webdriver.Chrome(options=chrome_options)


bro.get('https://www.cnblogs.com/liuqingzheng/p/16005896.html')

print(bro.page_source)
time.sleep(3)
bro.close()

搜索标签

搜索标签
  1. 根据id号查找标签:
  2. 根据name属性查找标签:
  3. 根据标签查找标签:
  4. 按类名找:
  5. a标签文字:
  6. a标签文字,模糊匹配:
  7. 按css选择器找:
  8. 按xpath找:
获取标签的属性,文本,大小,位置
  1. 属性:bro.get_attribute('src')
  2. 文本:bro.text
  3. 大小:tag.size
  4. 位置:bro.location
  5. id(不是标签id,无需关注):tag.id
  6. 标签名:tag.tag_name
找到页面中所有div
python">divs=bro.find_elements(By.TAG_NAME,'div')
按类名找
python">div=bro.find_element(By.CLASS_NAME,'postDesc').text
按css选择器
python">div=bro.find_element(By.CSS_SELECTOR,'div.postDesc').text

#id为topics下的div下的div中类为postDesc
div=bro.find_element(By.CSS_SELECTOR,'#topics > div > div.postDesc').text

http://www.niftyadmin.cn/n/5163643.html

相关文章

css锚点跳转导致被顶部元素挡住内容

https://blog.csdn.net/xcxwd/article/details/125991703 <style> html {scroll-padding-top: 60px; /* 控制a标签锚点距离顶部距离 */scroll-behavior: smooth; /* 平滑滚动 */ } </style>

智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

计算机网络学习笔记(五):运输层(待更新)

5.1 概述 5.1.1 TCP协议的应用场景 TCP为应用层协议提供可靠传输&#xff0c;发送端按顺序发送&#xff0c;接收端按顺序接收&#xff0c;其间发送丢包、乱序&#xff0c;TCP负责重传和排序。下面是TCP的应用场景。 多次交互&#xff1a;客户端程序和服务端程序需要多次交互才…

多语言翻译软件 Mate Translate mac中文版特色功能

Mate Translate for Mac是一款多语言翻译软件&#xff0c;Mate Translate mac可以帮你翻译超过100种语言的单词和短语&#xff0c;使用文本到语音转换&#xff0c;并浏览历史上已经完成的翻译。你还可以使用Control S在弹出窗口中快速交换语言。 Mate Translate Mac版特色功能…

数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言&#xff1a;回顾顺序表的优缺点&#xff1a;为什么要引入链式结构的线性表&#xff1f; 一、什么是链表&#xff1f;二、链表的分类①为什么要设置头节点&…

机器视觉人体跌倒检测系统 - opencv python 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器视觉人体跌倒检测系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&…

[MT8766][Android12] 系统设置隐藏休眠时间和锁屏选项

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MT8766 版本: Android 12 kernel: msm-4.19 问题描述 最近开发的一款智能盒子&#xff0c;没有屏幕显示&#xff1b;所以&#xff0c;系统默认设置成永不休眠以及默认不锁屏&#xff1b;但是&#xff0c;…

低功耗MCU应用的编程技巧

低功耗微控制器&#xff08;MCU&#xff09;在许多电子设备中扮演着重要角色&#xff0c;特别是在依赖电池供电或者需要长时间待机的应用中。为了最大程度地延长电池使用寿命或减少能源消耗&#xff0c;开发人员需要采取针对低功耗的编程技巧。以下是一份关于低功耗MCU应用的编…