selenium模块用途

selenuim原先多用于测试部门测试,由于它可以操作浏览器,有时候也用于爬虫领域
优点:操作浏览器访问网站
缺点:速度较慢

下载模块

# 下载模块
pip3 install selenium
"""selenuim由于需要操作浏览器,所以在下载模块的基础之上还需要下载一个操作浏览器的驱动文件"""
# 下载驱动
操作不同的浏览器需要下载不同的驱动,我们统一使用谷歌
驱动文件可以存放在两个地方
1.项目的根目录下(不推荐)
2.将下载好的驱动文件放到python文件夹里面的scripts目录中(推荐)
http://npm.taobao.org/mirrors/chromedriver/2.35/ 
if mac系统:
然后将解压后的chromedriver移动到/usr/local/bin目录下 注意:selenium3默认支持的webdriver是Firfox,而Firefox需要安装geckodriver 下载链接:https://github.com/mozilla/geckodriver/releases

基本使用方式

# 基本使用
from selenium import webdriver
import time # 打开谷歌浏览器
bro = webdriver.Chrome()
#其余浏览器
# bro = webdriver.Firefox()
# bro = webdriver.Safari()
# bro = webdriver.Ie()
# bro = webdriver.Edge()
# 访问网站
bro.get('https://www.jd.com')
time.sleep(5) # 自动关闭浏览器
bro.close()

自动打开京东或百度搜索定义物品

from selenium import webdriver
import time
# 模拟键盘按键
from selenium.webdriver.common.keys import Keys # 打开谷歌浏览器
bro = webdriver.Chrome()
# bro = webdriver.Firefox()
# bro = webdriver.Safari()
# bro = webdriver.Ie()
# bro = webdriver.Edge()
# 访问网站
bro.get('https://www.baidu.com')
inputEle = bro.find_element_by_id('kw')
# inputEle = bro.find_element_by_id('key') # 京东
inputEle.send_keys("美女")
inputEle.send_keys(Keys.ENTER) time.sleep(10)
bro.close()

selenuim模块登录百度

# 1、find_element_by_id   根据id找
# 2、find_element_by_link_text 根据链接名字找到控件(a标签的文字)
# aEle = bro.find_element_by_link_text('新闻')
# print(aEle.text)
# 3、find_element_by_partial_link_text 根据链接名字找到控件(a标签的文字)模糊查询
# 4、find_element_by_tag_name 根据标签名
# 5、find_element_by_class_name 根据类名
# 6、find_element_by_name 根据属性名
# 7、find_element_by_css_selector 根据css选择器
# 8、find_element_by_xpath
  """
  XML:
    用途:1.配置文件
2.前端页面(类似于HTML)
odoo框架
erp 前端界面使用的就是XML
  """
from selenium import webdriver
import time bro=webdriver.Chrome()
bro.get("https://www.baidu.com")
bro.implicitly_wait(10) """
#d1 等价于 id='d1'
.c1 等价于 class='c1'
div p 找div里面所有的p(后代)
div > p 找div里面第一层级的p(儿子)
"""
# 利用selenuim模拟百度登录操作
# 查找到登录的a标签
aEle = bro.find_element_by_link_text('登录')
# 点击登录标签
aEle.click()
# 查找用户名登录标签
a1Ele = bro.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn')
# 点击
a1Ele.click()
# 查找用户名和密码标签输入内容
usernameEle = bro.find_element_by_id('TANGRAM__PSP_11__userName')
usernameEle.send_keys('admin123')
time.sleep(1)
passwordEle = bro.find_element_by_id('TANGRAM__PSP_11__password')
passwordEle.send_keys('admin123')
# 查找登录按钮 点击即可
btnEle = bro.find_element_by_id('TANGRAM__PSP_11__submit')
btnEle.click()
time.sleep(5)
bro.close() # 主动关闭页面

爬取京东商品信息

# 常用方法
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys bro = webdriver.Chrome()
bro.get("http://www.jd.com")
bro.implicitly_wait(10) # 延时等待 # 查找搜索商品的input框
inputEle = bro.find_element_by_id('key')
# 输入商品内容
inputEle.send_keys('手机')
# 按下回车确认搜索内容
inputEle.send_keys(Keys.ENTER)
# 研究页面商品规律 发现是一个个的li标签 都具有class属性
goods_li = bro.find_elements_by_class_name('gl-item')
# 分析每个li里面的数据特征
for good in goods_li:
html标签class中p-img下的a标签下的img标签中的src
img_url = good.find_element_by_css_selector('.p-img a img').get_attribute('src')
if not img_url:
img_url = 'https:' + good.find_element_by_css_selector('.p-img a img').get_attribute('data-lazy-img')
url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
price = good.find_element_by_css_selector('.p-price i').text
name = good.find_element_by_css_selector('.p-name em').text.replace('\n', '')
commit = good.find_element_by_css_selector('.p-commit a').text
print('''
商品链接:%s
商品图片:%s
商品名字:%s
商品价格:%s
商品评论数:%s
''' % (url, img_url, name, price, commit))
time.sleep(5)
#主动关闭链接
bro.close()

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys bro = webdriver.Chrome()
bro.get("https://www.jd.com")
# WebElement延时等待
bro.implicitly_wait(10) # 分析每个li里面的数据特征
def get_goods(bro):
print("---------------------------------------")
# 研究页面商品规律 发现是一个个的li标签 都具有class属性
goods_li = bro.find_elements_by_class_name('gl-item')
# html标签class中p-img下的a标签下的img标签中的src
for good in goods_li:
img_url = good.find_element_by_css_selector('.p-img a img').get_attribute('src')
if not img_url:
img_url = 'https:' + good.find_element_by_css_selector('.p-img a img').get_attribute('data-lazy-img')
url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
price = good.find_element_by_css_selector('.p-price i').text
name = good.find_element_by_css_selector('.p-name em').text.replace('\n', '')
commit = good.find_element_by_css_selector('.p-commit a').text
print('''
商品链接:%s
商品图片:%s
商品名字:%s
商品价格:%s
商品评论数:%s
''' % (url, img_url, name, price, commit)) next_page = bro.find_element_by_partial_link_text("下一页")
time.sleep(1)
next_page.click()
time.sleep(1)
get_goods(bro) input_search = bro.find_element_by_id("key")
input_search.send_keys("手机")
input_search.send_keys(Keys.ENTER)
# 进入另外一个页面
try:
get_goods(bro)
except Exception as e:
print("结束")
finally:
bro.close() # time.sleep(5)
# #主动关闭链接
# bro.close()

京东翻页代码

selenium操作浏览器模块的更多相关文章

  1. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

  2. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  3. selenium操作浏览器的前进和后退

    前进关键字:driver.forward() 后退关键字:driver.back() 测试对象:1.https://www.baidu.com/ 2.https://www.sogou.com/ 实例 ...

  4. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  5. 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条

    目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...

  6. 『心善渊』Selenium3.0基础 — 18、使用Selenium操作浏览器的弹窗

    目录 1.操作浏览器自带弹窗 2.操作浏览器页面自定义弹窗 1.操作浏览器自带弹窗 (1)说明: webdriver中处理JavaScript所生成的alert.confirm 以及prompt 弹窗 ...

  7. selenium操作浏览器cookie方法

    /**     * 操作浏览器的cookie     */        @Test    public void testCookie()throws Exception{        drive ...

  8. selenium操作浏览器窗口最大化和刷新

    实际测试过程中经常遇到打开一个页面并不是全屏显示,但是却希望它能够全屏显示或者新增一条记录后需要刷新一下看能不能再列表中正常显示. 于是就有了今天的关于对浏览器窗口的最大化和刷新页面.需要说明的一点: ...

  9. [Selenium] 操作浏览器 Cookies

    WebDriver 提供了一系列 Cookies 的操作来获取.填写.删除 Cookies 的方法,节省了多次在登陆页面的查找元素并填写登录信息的时间. 1)获取 Cookies ,并保存到文件中以备 ...

  10. selenium操作浏览器

    import org.openqa.selenium.WebDriver; import common.StartFireFox; public class TestBrowser { public ...

随机推荐

  1. Elasticsearch索引不存在时,查询接口报错怎么办?

    1.索引不存在,报错:type=index_not_found_exception, reason=no such index解决办法: DSL: GET /text_index_003/_searc ...

  2. Linux基础操作一

    开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 开启虚拟机→Username:root→Password:"(注册时所创建的密码,比如"123 ...

  3. EVENG导入Win7镜像以后可以启动无法VNC打开

    原因:未安装支持 eveng 的 vncviewer 解决方法:下载 vncviewer: https://pan.eve-ng.cn/Tools/EVE-NG/Client/EVE-NG-Win-C ...

  4. Nancy如何接收POST过来的Json数据

    当Nancy版本为2.0.0.0时 string postData = Request.Body.AsString; 当Nancy版本为1.4.5.0时 自己写一个扩展方法,代码如下 /// < ...

  5. FTP上传中文文件,内容乱码

    记录一下: spring boot 程序 ftp上传中文文件,内容乱码. 1.刚开始程序部署在Windows平台上测试,发现上传后的文件内容是乱码,查看文件编码格式是ANSI(Windows下文本文件 ...

  6. Unicode编码解码的全面介绍

    1. Unicode的起源和发展 Unicode是一个国际标准,旨在统一世界上所有文字的表示方式.它最初由Unicode协会创立,解决了不同字符集之间的兼容性问题.Unicode的发展经历了多个版本, ...

  7. 正则表达式 (?<= 与 (?= 的区别

    (?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串.这是一个非获取匹配, 也就是说,该匹配不需要获取供以后使用.例如,"Windows(?=95|98 ...

  8. 微服务集成Spring Cloud Alibaba Seata(一)Seata服务搭建

    1.Seata介绍 Seata是阿里开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.数据库事务我们都知道,事务都是遵循ACID原则.而通过使用Seata可以实现在两个服务模块 ...

  9. HarmonyOS振动效果开发指导

      Vibrator开发概述 振动器模块服务最大化开放硬工最新马达器件能力,通过拓展原生马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性.提升用户体验 ...

  10. 【中秋国庆不断更】XML在HarmonyOS中的生成,解析与转换(下)

    一.XML解析 对于以XML作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析XML标签和标签值.解析XML属性和属性值.解析XML事件类型和元素深度三类场景. XML模块提供Xml ...