首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python之Selenium模拟浏览器

Python之Selenium模拟浏览器

作者头像
鱼找水需要时间
发布于 2023-02-16 10:32:00
发布于 2023-02-16 10:32:00
1.6K00
代码可运行
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程
运行总次数:0
代码可运行

1.什么是selenium

http://www.selenium.org.cn/

  1. Selenium是一个用于Web应用程序测试的工具。
  2. Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
  3. 支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动 真实浏览器完成测试。
  4. selenium也是支持无界面浏览器操作的。

2.为什么使用selenium

模拟浏览器功能,自动执行网页中的js代码,实现动态加载。使请求更加真实(好像是真的浏览器在请求)

3.如何安装selenium

(1)操作谷歌浏览器驱动下载地址,两个地址都可以。只对应大版本就行,向下兼容

  • http://chromedriver.storage.googleapis.com/index.html
  • http://npm.taobao.org/mirrors/chromedriver/

(2)查看谷歌浏览器版本 谷歌浏览器右上角‐‐>帮助‐‐>关于 (3)安装python库,python安装目录Scripts目录下执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install selenium -i  https://pypi.douban.com/simple/

安装失败的尝试升级pip:python -m pip install --upgrade pip

windows系统直接下载32位,下载完不要安装

4. selenium的使用步骤

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1)导入:from selenium import webdriver 
(2)创建谷歌浏览器操作对象: 
	path = 谷歌浏览器驱动文件路径 
    browser = webdriver.Chrome(path)3)访问网址 
	url = 要访问的网址 
    browser.get(url)

基本使用示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# (1)导入selenium
from selenium import webdriver


# 下载的selenium解压后文件的路径,放在项目里lib/目录下
path = 'lib/chromedriver.exe'
# (2) 创建浏览器操作对象
browser = webdriver.Chrome(path)

# (3)访问网站
# url = 'https://www.baidu.com'
#
# browser.get(url)

url = 'https://www.jd.com/'

browser.get(url)

# page_source获取网页源码
content = browser.page_source
print(content)

5. selenium的元素操作

5.1元素定位:

自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先 要找到它们,WebDriver提供很多定位元素的方法

Google Chrome浏览器103版本语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)

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

# 元素定位

# 根据id来找到对象 旧版本语法:find_element_by_id
button = browser.find_element(By.ID, 'su')
print(button)

# 根据标签属性的属性值来获取对象的  旧版本语法:find_element_by_name
button = browser.find_element(By.NAME, 'wd')
print(button)

# 根据xpath语句来获取对象  旧版本语法:find_elements_by_xpath
button = browser.find_elements(By.XPATH, '//input[@id="su"]')
print(button)

# 根据标签的名字来获取对象  旧版本语法:find_elements_by_tag_name
button = browser.find_elements(By.TAG_NAME, 'input')
print(button)

# 使用的bs4的语法来获取对象,旧版本语法:find_elements_by_css_selector
button = browser.find_elements(By.CSS_SELECTOR, '#su')
print(button)

# 旧版本语法:find_element_by_link_text
button = browser.find_element(By.LINK_TEXT, '网盘')
print(button)

5.2 访问元素信息

Google Chrome浏览器103版本语法

获取元素属性

  • .get_attribute(‘class’)

获取元素文本

  • .text

获取标签名

  • .tag_name

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)


url = 'http://www.baidu.com'
browser.get(url)

# 获取id为su的元素
input = browser.find_element(By.ID, 'su')

# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签的名字
print(input.tag_name)
# 获取元素value属性
print(input.get_attribute('value'))

# 获取元素文本,就是两个标签直接的文本
a = browser.find_element(By.LINK_TEXT, '新闻')
print(a.text)

5.3 交互

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
点击:click() 
输入:send_keys() 
后退操作:browser.back() 
前进操作:browser.forword() 
	模拟JS滚动: js='document.documentElement.scrollTop=100000' 
	browser.execute_script(js) 执行js代码 
获取网页代码:page_source 
退出:browser.quit()

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time

# 创建浏览器对象
s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)

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


time.sleep(2)

# 获取文本框的对象
input = browser.find_element(By.ID, 'kw')

# 在文本框中输入selenium
input.send_keys('selenium')

time.sleep(2)

# 获取百度一下的按钮
button = browser.find_element(By.ID, 'su')

# 点击按钮
button.click()

time.sleep(2)

# 滑到底部, 固定写法 一般写100000
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(2)

# 获取下一页的按钮
next = browser.find_element(By.XPATH, '//a[@class="n"]')

# 点击下一页
next.click()

time.sleep(3)

# 回到上一页
browser.back()

time.sleep(3)

# 再回去,前进
browser.forward()

time.sleep(3)

# 退出
browser.quit()

执行效果:

https://live.csdn.net/v/embed/221168

2022.07.02-15.57.51

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
@程序员:连小学生都开始学编程了,你们怕了吗?
每每在新闻上出现“小学生”字眼时,都会吸引众人的目光,毕竟在很小的年纪,就取得了成人难以匹敌的成绩。同样,在编程界也有不少战绩辉煌的小学生,谈及他们的过往,绝对令人惊叹! 小学生开挂的编程人生 安薇塔·维贾伊(Anvitha Vijay) 相信大家一定还记得,在 2016 苹果 WWDC 大会上,只有 9 岁的澳洲小女孩安薇塔·维贾伊(Anvitha Vijay),成为了媒体争相报道的焦点。在维贾伊只有 7 岁大的时候,其梦想就是开发一款移动应用,她通过观看网络上的免费教程,开始了自学编程。终于,在
AI科技大本营
2018/04/27
1.3K0
@程序员:连小学生都开始学编程了,你们怕了吗?
编程教育新趋势,玩玩游戏就学会的那种
但无论是AI机器人,还是程序员们的贡献,都离不开一个非常重要的技术——编程。说编程技术是人工智能时代的核心竞争模块之一,可能并不为过。
量子位
2020/03/05
5900
编程教育新趋势,玩玩游戏就学会的那种
scratch少儿编程中文版下载安装,scratch支持Win/Mac系统下载
Scratch是一种适合儿童学习编程的图形化编程语言,由麻省理工学院的媒体实验室开发。Scratch的优势在于它的易用性和互动性,可以帮助孩子们掌握编程思维,提高计算机科学素养,同时培养创造性思维、逻辑思维和解决问题的能力。
用户10413399
2023/03/16
1.9K0
scratch少儿编程中文版下载安装,scratch支持Win/Mac系统下载
学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论
明敏 衡宇 发自 凹非寺 量子位 | 公众号 QbitAI “怎么培养数学逻辑思维?来点编程试试?” 大概这是很多人的既有认知,毕竟感觉程序员们的数学都挺好的。 巴特,反转来了。 来自巴黎大学的研究人员发现,小学生改用编程课学数学后,对成绩不仅没有明显帮助,甚至会产生一些负面影响。 在欧几里得除法、加法分解、分数运算几个方面,影响范围为-0.16 ~ -0.21(值为负数即代表表现不如标准组)。 而且编程软件的可视化界面,还影响了孩子的注意力集中能力。 没错,这里说的就是风靡少儿编程圈的Scratch,它
量子位
2022/09/13
4600
学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论
万字长文,全面解读小孩学编程?
有一天小码匠跟我说,学编程有助于锻炼她的逻辑思维,每次写算法,她都会先思考逻辑,想明白了才动手写,
小码匠
2022/06/16
8050
万字长文,全面解读小孩学编程?
读完小学生编程考试大纲,不妨重新讨论一下「计算机从娃娃抓起」这件事
就比如大学生们几乎都参加过的全国计算机等级考试,比如二级 Office 考试,考察的是 Word、Powerpoint、Excel 这种常用软件的操作,但据统计通过率还不足三分之一……
机器之心
2020/02/12
1K0
读完小学生编程考试大纲,不妨重新讨论一下「计算机从娃娃抓起」这件事
90%家长都不知道关于少儿编程的这些疑题!
2017年7月,国务院印发《新一代人工智能发展规划》。其中明确提出:广泛开展人工智能科普活动。实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。 良好政策无疑给众多家长打了一剂“强心针”,孩子到底学不学编程? 家长:望子成龙压力大 “听说是为编程打基础的,我就给孩子报了名。”至于这样的编程学习对孩子有没有用,她并不能确定。 大多数家长本身对编程并不了解。他们的想法很简单:不让孩子输在起跑线上。一位家长说:“每一代人都会有这一代
企鹅号小编
2018/01/23
1.1K0
90%家长都不知道关于少儿编程的这些疑题!
Scratch少儿编程软件win/mac电脑版,Scratch软件下载安装教程
随着人工智能和大数据时代的到来,编程能力已经成为了一种非常重要的技能。而Scratch作为一款支持儿童编程的软件,不仅通过图形化编程环境提高了编程入门门槛,还提供了丰富多样的编程项目,使得孩子们在玩中学习,掌握编程技能,更好地适应未来社会的发展。
用户10410624
2023/04/09
2K0
Scratch:人人都能玩转的编程指南
微软创始人比尔.盖茨曾说过孩子编程要从小开始,从兴趣出发,通过计算机编程来培养创造力,未来我们的下一代才具有竞争力。为此,欧美发达国家掀起一股青少年学习计算机编程的浪潮。
博文视点Broadview
2020/06/11
1.1K0
青少年编程让孩子成为创意思考者!
现在的孩子们都能熟练地使用各种数码产品,但这能代表他们真正拥有应用新科技的能力吗?未来是一个人工智能的时代,孩子们不仅需要会使用各种软件、APP,还需要学会自己编写、创作程序。编程将会像“听、说、读、写、算”一样,成为一项基本技能。 2017年7月8日《国务院关于印发新一代人工智能发展规划的通知》中第五点“保障措施”第6条提到要“广泛开展人工智能科普活动”:“支持开展形式多样的人工智能科普活动,鼓励广大科技工作者投身人工智能的科普与推广,全面提高全社会对人工智能的整体认知和应用水平。实施全民智能教育项目
企鹅号小编
2018/02/12
1.2K0
青少年编程让孩子成为创意思考者!
编程,到底在学什么?
从2015年开始,就有几个词语开始风靡全球,STEAM、STEM、Scratch、Python、少儿编程。国家教育部的一个个红头文件、各个省将编程融入信息技术课程,各个培训机构推出线上,线下的编程课程,貌似行业如火如荼。
HTML5学堂
2019/05/08
1.1K0
编程,到底在学什么?
乔布斯说“每个人都应该学习编程”,少儿编程教育会是蓝海吗?
少儿编程,一个看上去很不起眼的市场,却成为一门大生意,去年中国少儿编程创投领域一共有14个项目完成融资,比2016年增加一倍,成了黑马赛道。 各路巨头瞄准少儿编程教育市场 不只是初创公司在少儿编程市场备受资本青睐,各路巨头接踵而至。 • 索尼推出了KOOV™可编程教育机器人套件; • 苹果几年前推出了Swift Playground,今年干脆将春季发布会主题定为“教育”,发布了廉价版的iPad和系列教育软件,库克透露芝加哥公立大学正在使用苹果设备向37万孩童教授编程技能; • 中国课外教育龙头
罗超频道
2018/04/25
1.4K0
乔布斯说“每个人都应该学习编程”,少儿编程教育会是蓝海吗?
人工智能时代来临,还在炫耀孩子能考100分?
作为2018年排名第一的科技趋势,人工智能(AI)已越来越多的被人们提起。Gartner最近的一项调查显示,41%的公司已经在试点或采用AI解决方案方面取得了进展,其余的公司也正在收集信息,准备构建自己的AI战略。对于人工智能将给我们带来什么?学术界和企业界有着激烈的争论,目前的主流观点是,人工智能将会极大地提高生产力和经济政治决策水平,推动经济和科技高速发展。随着人工智能技术的广泛应用,将会给世界带来第四次工业革命。 回顾历史,每次新技术的普及,都会带来生产方式的转变,大量的现有工作,将被新的工作取代,这
企鹅号小编
2018/01/24
1.1K0
人工智能时代来临,还在炫耀孩子能考100分?
假期娱乐和学习兼得型STEAM智能机器人有哪些?(2018-2019)
网址: www.stemtoyexpert.com/top-10-best-stem-toys/
zhangrelay
2022/04/29
5980
假期娱乐和学习兼得型STEAM智能机器人有哪些?(2018-2019)
通过游戏来学习编程
随着互联网和物联网的发展,随着人工智能和大数据的发展,随着IT技术的发展,你会发现越来越多的工作岗位需要一些编程技术,即使是一些财务或者文职人员会一些编程知识也是对工作和生活大有帮助的。
程序那些事儿
2023/03/07
1.4K0
通过游戏来学习编程
少儿编程的学习[通俗易懂]
Scratch是由MIT(美国麻省理工学院)针对5至16岁的儿童和青少年设计的可视化程序设计语言与开发环境,专注于用编程实现简单的动画效果。相比其他传统的编程语言,例如VB, Java, Pascal等相比,Scratch语言创建的目的不是为了培养少年程序员,它的宗旨是“创作和分享你自己的交互故事、游戏、音乐和艺术”,培养青少年的创造性思维、逻辑思维和合作学习的能力。MIT开发团队被称为“终身幼儿园团队(Lifelong Kindergarten Group) “。针对8岁以上孩子们的认知水平,以及对于界面的喜好,MIT做了相当深入得研究和颇具针对性的设计开发。不仅易于孩子们使用,又能寓教于乐,让孩子们在创作中获得乐趣。
全栈程序员站长
2022/07/23
9070
少儿编程的学习[通俗易懂]
小学生编程入门从哪种编程语言学起?
如果是编程零基础学习者,那么以Scratch为切入点是个不错选择。Scratch语法基于一系列孩子们可以拼插彼此的图形化“代码块”,其设计极具交互性,甚至单击一堆代码块就能立刻执行这些代码。从而大大降低了孩子们的学习难度,孩子们能在短时间内获取学习编程的成就感,这对他们学习编程是个很好的激励。
贝尔科教
2019/05/31
2.1K0
小学生编程入门从哪种编程语言学起?
微软编程教育都在搞什么?从code.org到makecode,从Minecraft到Micro:bit
奥观海同志的梦想 奥观海同志在位时,大力普美国的编程教育,奥观海同志可能是第一位亲自写代码的美帝总统。 富士康4万机器人上岗,奥巴马在国情咨文里说,让每个孩子都能通过全民计算机科学计划学习计算机科学,而且奥观海呼吁全美国的无产阶级哦不资产阶级联合起来,学习编程,美国全民计算机科学培养计划,奥观海还签署了相关政策,配套资金,大力推动美国的资本主义的接班人学习编程。 警告:这是一篇多图没有重点的文章,慎入.本文的主角是: 编程一小时 美国的编程一小时活动,那是开展的如火如荼啊,早在五十多年前老外就开始探索教小孩
企鹅号小编
2018/01/15
3.2K0
微软编程教育都在搞什么?从code.org到makecode,从Minecraft到Micro:bit
scratch编程必要学吗?scratch电脑版,scratch中文版win/mac安装
Scratch是一种基于块的编程语言,它可以帮助初学者快速入门编程。如果您是计算机编程的初学者,那么学习Scratch是非常有必要的,因为它可以帮助您理解编程基础概念和逻辑思维。同时,Scratch也是一种很有趣的编程语言,可以用来开发简单的游戏和动画等项目,这对于孩子们尤其有吸引力。如果您已经掌握了其他编程语言,那么学习Scratch可能并不是必要的,但它仍然是一种有用的工具,可以用于教学和娱乐。
用户10413399
2023/03/22
3.3K0
scratch编程必要学吗?scratch电脑版,scratch中文版win/mac安装
Scratch 初体验与详细介绍
在数字时代,编程教育不再是遥不可及的专业技能,而是越来越多青少年乃至儿童接触并热爱的创意表达方式。Scratch,作为一款由麻省理工学院(MIT)媒体实验室开发的图形化编程语言,自诞生以来,就以其直观易学的特点,成为了全球范围内普及编程教育的先锋。本文将带您深入体验Scratch的魅力,从初识到实操,全方位解析这一强大的创意工具。
小明爱吃火锅
2024/07/08
3470
推荐阅读
相关推荐
@程序员:连小学生都开始学编程了,你们怕了吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档