爬虫学习-selenium模块

news2024/9/29 5:34:42
    • 与爬虫的关联

  • 可以便携的获取网站中动态加载的数据

  • 便携实现模拟登录

  • 基于游览器自动化的一个模块(按键精灵脚本)

    • 使用流程

  • 环境安装pip install selenium

  • 下载一个游览器的驱动程序:谷歌浏览器驱动安装 - 琳达的博客 - 博客园 (cnblogs.com)

  • from selenium import webdriver

  • 实例化一个游览器对象

  • 编写基于游览器自动化的操作代码

    • 一些自动化操作

  • 发起请求:get(url)

  • 标签定位:find系列的方法

  • 标签交互:send_keys('xxx')

  • 点击:click()

  • 执行js程序:execute_script('jsCode')

  • 前进、后退:back()、forward()

  • 关闭游览器:quit()

from selenium import webdriver
from lxml import etree
import time

# 实例化一个游览器对象
bro = webdriver.Chrome(executable_path='chromedriver.exe')
# 让游览器发起一个指定url对应请求
bro.get('https://i.qq.com/')
# 切换作用域
bro.switch_to.frame('login_frame')
a_tag=bro.find_element_by_id('switcher_plogin')
a_tag.click()
userName_tag=bro.find_element_by_id('u')
passWord_tag=bro.find_element_by_id('p')
time.sleep(3)
userName_tag.send_keys('2371964121')
time.sleep(3)
passWord_tag.send_keys('xxxxxx')
time.sleep(3)
btn=bro.find_element_by_id('login_button')
btn.click()
time.sleep(3)
bro.quit()
    • 处理iframe

  • 如果定位的标签存在iframe标签内的,则必须使用switch_to.frame(id)

  • 动作链

  • from selenium.webdriver import ActionChains

  • action=ActionChains(bro):实例化动作链

  • action.click_and_hold(指定标签):点击长按指定的标签

  • action.move_by_offset(x,y).perform():偏移一定像素,x是水平方向,y是竖直方向

  • perfrom():立即执行动作链操作

  • action.release():释放动作链

  • 无可视化界面(无头游览器)

from selenium import webdriver
# 无可视化界面操作
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('headless')
chrome_options.add_argument('disable-gpu')
# 实现让selenium规避被检测到的风险
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

bro = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options, options=option)
bro.get('https://www.baidu.com/')
print(bro.page_source)
  • 案例

  • 12306登录

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains  # 动作链
# 实现规避检测
from selenium.webdriver import ChromeOptions

import time


def login():
    driver.find_element(By.ID, 'J-userName').send_keys('zh')
    driver.find_element(By.ID, 'J-password').send_keys('mm')

    driver.find_element(By.ID, 'J-login').click()
    time.sleep(2)
    # 滑动模块
    clock = driver.find_element(By.CLASS_NAME, 'nc_iconfont')

    action = ActionChains(driver)
    # 点击长按滑动模块
    action.click_and_hold(clock).perform()
    for i in range(5):
        action.move_by_offset(60, 0)
        time.sleep(0.1)
    action.release().perform()


if __name__ == '__main__':
    url = 'https://kyfw.12306.cn/otn/resources/login.html'
    options = ChromeOptions()
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    driver = webdriver.Chrome(executable_path='./chromedriver.exe', options=options)
    # 设置浏览器,防止selenium被检测出来
    driver.get(url)
    login()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试开发 | TestNG 与 Junit 对比,测试框架如何选择?

TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下:1. Junit 更适合隔离性比较强的单元测试;2. TestNG 是比 Junit 涵盖功能更全面的测试框架,具…

世界第一虚拟乐队举办了一场 AR 音乐会 #Gorillaz

“世界第一虚拟乐队” 是谁?23 年前,一支名为 Gorillaz 的乐队在英国埃塞克斯横空出世。和当时主流乐队形式不同的是,这支乐队以虚拟形象出现,凭借着过硬的音乐制作实力和别具一格的虚拟乐队形象,不久后就席卷了全球&a…

如何打造敏捷项目管理团队?【金曼说4】

曾经乔布斯说过他此生最骄傲的事不是创造了苹果,而且团队。由此也说明团队的重要性。一支优秀的团队能打造出无数优秀的产品和项目。无论是在商场还是战场上,快速反应和适应能力都至关重要,在技术和干扰性力量导致变革速度加快的时代更是如此…

HTML 常见面试题

一、HTML5(超文本标记语言,第五次重大修改)二、HTML5新特性①:新的语义标签 header footer nav aside article section②:新的表单控件 calendar date time email url search③:音频、视频( aud…

地产2022价值启示录:房企必须闯过的“三重门”

回顾2022年,中国最大的经济变向之一,无疑就是地产增量时代的落幕。过去一整年,地产行业在“冷热交替”中前行。上半年,疫情、交付延期、停贷潮等阴霾萦绕在众多房企头顶上,市场需求疲软之下业绩下滑,难以看…

《MySQL系列-InnoDB引擎10》InnoDB关键特性-异步IO

InnoDB 关键特性 InnoDB存储引擎的关键特性包括: Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 异步IO 为…

在外打工好久不回老家,用python为家里贴上新年春联

每逢春节,无论城市还是农村, 家家户户都要挑漂亮的红春联贴于门上,辞旧迎新,增加喜庆的节日气氛。 唠叨神话 据说这一习俗起于宋代,在明代开始盛行, 到了清代,春联的思想性和艺术性都有了很…

SpringBoot @ConfigurationProperties使用详解

SpringBoot ConfigurationProperties使用详解 目录SpringBoot ConfigurationProperties使用详解1.1 简述1.2 场景一1.3 场景二1.4 场景三1.5 聊聊EnableConfigurationProperties1.1 简述 在Spring Boot中注解ConfigurationProperties有三种使用场景,而通常情况下我…

51单片机学习笔记_6 IO通信:电脑与单片机之间的通信

通信 单片机还可以通过IO口实现多种通信。 串行通信:一条数据线,一次发1bit,发很久。 并行通信:多条数据线,同时发送,发的速度快多了但是费用高、接收困难、抗干扰性差。 异步通信:发送和接…

PMP、ACP、软考证书,当前哪些值得一考?

看自己的偏向吧,要说考的话,是都值得考的。ACP和PMP都是美国PMI发起的考试,软考是国内的考试。PMP是项目管理证书,学习的内容是项目管理,包含大约一半的敏捷项目管理的内容,ACP的内容都是敏捷项目管理&…

操作系统第三次实验-动态分区存储管理(python代码实现)

一、实验目的: 目的:熟悉并掌握动态分区分配的各种算法,熟悉并掌握动态分区中分区回收的各种情况,并能够实现分区合并。 任务:用高级语言模拟实现动态分区存储管理。 二、实验内容: 1、实验内容 分区分配算…

Qt 编译出的程序无法在其他电脑运行

明确构建套件(Kit) Kit 包含了构建程序所需的全部工具,例如编译器,可以从Qt Creator 左下角查看Kit。 我这里使用的Kit是Desktop Qt 5.12.6 MinGW 64-bit 打开 Kit 版本对应的 Qt 命令行工具 我这里需要打开Qt 5.12.6 (MinGW 7.3…

php反序列化字符逃逸

php反序列化字符逃逸 php反序列化字符逃逸的原理 当开发者使用先将对象序列化,然后将对象中的字符进行过滤,最后再进行反序列化。这个时候就有可能会产生PHP反序列化字符逃逸的漏洞。 php反序列化字符逃逸分类 过滤后字符变多 过滤后字符变少 过滤后字…

Alma Linux和Rocky Linux,你会选择用哪个?

AlmaLinux和Rocky Linux是两个基于 Red Hat Enterprise Linux (RHEL) 发行版的免费开源操作系统,两者都旨在由社区驱动、透明且稳定,但两者之间存在一些关键差异。 Rocky Linux Rocky Linux 是一个基于 Red Hat Enterprise Linux (RHEL) 发行版的免费开…

Android 音视频学习之《MediaCodec》

一、介绍以及编解码流程 MediaCodec 类可用于访问低级媒体编解码器,即编码器/解码器组件。它是 Android 低级多媒体支持基础结构的一部分(通常与MediaExtractor、MediaSync、MediaMuxer、MediaCrypto、 MediaDrm、Image、Surface和一起使用AudioTrack。…

060-MySQL数据库综合应用(实现登录及注册功能源代码)

【上一讲】059-MySQL数据库综合应用(实现登录及注册功能)_CSDN专家-赖老师(软件之家)的博客-CSDN博客 本文章讲解JAVA数据库技术与MySQL数据库结合使用,利用DAO技术对数据库操作进行封装,达到高内聚低耦合,具体技术如下: 1.综合利用JAVA数据库技术,掌握Connection,St…

操作系统第四次实验-基本分页存储管理(python代码实现)

一、实验目的: 目的:熟悉并掌握基本分页存储管理的思想及其实现方法,熟悉并掌握基本分页存储管理的分配和回收方式。 任务:模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容: 1、实验内容 内存空间…

一道有意思的图论题

今天写这道题的过程就一直在摆,主要是写不太出来,之前想到动态规划去了,然后又开始深搜,在出口那块放动态规划 题: D. Ela and the Wiring Wizard 点我 但是cf让我明白了一个道理,任何一道我写不出来的题代…

点菜方案数

题目描述 不过uim的口袋里只剩 M元(M < 10000)&#xff0c;来到了一家低端餐馆前。 餐馆虽低端&#xff0c;但是菜品种类不少&#xff0c;有 N 种(N < 100)&#xff0c;第i种卖元(ai < 1000)。由于是很低端的餐馆所以每种菜只有一份。 uim奉行“不把钱吃光不罢休”&a…

作用域与作用域链

javascript拥有一套设计良好的规则来存储变量&#xff0c;并且之后可以方便的找到这些变量&#xff0c;这套规则叫做作用域。 内部原理 内部原理分成编译、执行、查询、嵌套和异常五部分。今天来简单说一下查询。 var a2;这行代码中&#xff0c;在引擎执行的第一步操作中&am…