如何利用 Selenium 对已打开的浏览器进行爬虫!

news2024/11/18 21:51:36

038a92aa423ba1e94e22ae637a9560ba.jpeg

大家好,我是安果!

在对某些网站进行爬虫时,如果该网站做了限制,必须完成登录才能展示数据,而且只能通过短信验证码才能登录

这时候,我们可以通过一个已经开启的浏览器完成登录,然后利用程序继续操作这个浏览器,即可以完成数据的爬取了

具体操作步骤如下:

1-1  安装依赖

# 安装依赖
pip3 install selenium

1-2  Chrome 应用完整路径

右键查看 Chrome 浏览器的完整路径

比如:C:\Program Files\Google\Chrome\Application\chrome.exe

6f79119ebcc7fb82752e0fcc7fe84354.png

1-3  命令行启动浏览器

接下来,在 CMD 终端中通过命令行启动 Chrome 浏览器

# 启动浏览器
cd C:\Program Files\Google\Chrome\Application && chrome.exe --remote-debugging-port=1234 --user-data-dir=“C:\selenum\user_data”

其中

  • --remote-debugging-port

指定浏览器调试端口号

PS:这里可以随机指定一个端口号,不要指定为已经被占用的端口号

  • --user-data-dir

用户配置文件目录

这里需要单独指定一个文件夹目录(不存在会新建),如果不显式指定该参数,运行会污染浏览器默认的配置文件

1-4  下载 ChromeDriver

根据 Chrome 浏览器版本下载对应的 ChromeDriver 驱动移动到某一个目录下

下载地址:

http://chromedriver.storage.googleapis.com/index.html

1-5  操作已打开的浏览器

假设上面开启的浏览器打开百度首页,我们现在编写一个简单的程序来继续操作上面的浏览器

注意的是,这里需要利用 debuggerAddress 指定浏览器的地址及端口号

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

chrome_options = Options()

# 指定已经打开浏览器的地址及端口号
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:1234")

# 注意:chrome版本与chromedirver驱动要保持一致
# 下载地址:http://chromedriver.storage.googleapis.com/index.html
s = Service(r"C:\Users\xingag\Desktop\111\chromedriver.exe")

driver = webdriver.Chrome(service=s, options=chrome_options)

# 操作浏览器
input_element = driver.find_element(By.ID, 'kw')

if input_element:
    # 关键字
    input_element.send_keys("AirPython")

    submit_element = driver.find_element(By.ID, 'su')

    if submit_element:
        # 点击搜索
        submit_element.click()

# 释放资源
# driver.close()

推荐阅读

5 分钟,教你从零快速编写一个油猴脚本!

爬虫工具篇 - 必会用的 6 款 Chrome 插件

一个人,一座城,你到底在乎什么?Python 爬虫告诉你!

END

好文和朋友一起看~

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

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

相关文章

STM32—超声波测距

超声波简介 超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度, 计算出模块到前方障碍物的距离。 型号:HC-SR04 时序图 怎么让它发送波 Trig触发信号,给Trig端口至少10us的高电平…

“华为杯”研究生数学建模竞赛2005年-【华为杯】A题:城市交通管理中的出租车规划(附获奖论文)

赛题描述 A: Highway Traveling time Estimate and Optimal Routing Ⅰ Highway traveling time estimate is crucial to travelers. Hence, detectors are mounted on some of the US highways. For instance, detectors are mounted on every two-way six-lane highways o…

Postman使用详解

一、常见类型的接口请求查询参数接口接口地址中,?问号后面的部分,即查询参数;该部分内容由键值对组成,有多个时,用&符号分隔。请求方法:GET表单类型接口1)HTTP请求,一…

电脑如何重装系统?Win10系统安装只需这两招!

电脑在日常生活和工作中是使用的比较多的。随着时间的推移,电脑越来越卡,系统越来越慢,或者是由于其他情况,有些人会选择对电脑进行重新安装。 但是很多人不知道系统安装前要注意什么,以及安装有哪些方法,…

论文笔记:Modeling Kinect Sensor Noise for Improved 3D Reconstruction and Tracking

文章目录概述效果如何?take home messagelateral noise 模型axial noise 模型实验实验设定lateral noise与axial noise的定义axial noise与lateral noise的提取噪声分布的结果和建模最终拟合得到的lateral noise模型最终拟合得到的axial noise模型应用噪声模型至Kin…

【Spring源码】插播一个创建代理对象的wrapIfNecessary()方法

在文章【分析向】没有三级缓存会导致什么? 中,提到过一个方法——wrapIfNecessary(),就是在这个方法中为Bean创建的代理对象,介于篇幅原因,当时并咩有详细🔎分析这个方法,这篇文章我们进去wrapI…

第三章 ArcGIS坐标系与投影变换

文章目录第一节 坐标系的概念1.1 坐标1.2 坐标系2 基准面介绍2.1 基准面概念2.2几种基准面的说明2.3 椭球体参数的区别3 坐标系的分类3.1 两种坐标系3.2 区别3.3 度(分、秒)和米的转换(高级)4 投影坐标系4.1 两种投影方法介绍4.2 …

5、判定法

定义 判定表法: 分析和表述若干输入条件下,被测对象针对这些输入做出响应的一种工具在遇到逻辑复杂的业务时,可以利用判定表理清期间的逻辑关系。 重要概念 条件: 条件桩:需求规格说明书定义的被测对象的所有输入条…

图解Attention

深度学习知识点总结 专栏链接: https://blog.csdn.net/qq_39707285/article/details/124005405 此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器…

面试官:JVM是如何判定对象已死的?

本文已收录至Github,推荐阅读 👉 Java随想录 知道的越多,才知知道的越少。——苏格拉底 文章目录引用计数算法可达性分析算法引用类型Dead Or Alive永久代真的"永久"吗?垃圾收集算法标记-清除算法标记-复制算法标记-整理…

网络编程基础

1 网络协议栈分层协议栈是指网络中各层协议的总和,反映了一个网络中数据传输的过程,由上层协议到底层协议,使用分层实现提高灵活性以及简化实现。OSI七层模型 和TCP/IP五层模型:物理层:考虑的是怎样才能在连接各种计算…

学长教你学C-day14-C语言文件操作

“我们的C语言学习也马上接近尾声了,今天我们来讲最后一个内容:C语言的文件夹操作。” “那么什么是文件呢?其实C语言里的文件是数据源的一种,最主要的作用是保存数据。例如txt、word、pdf等等都是不同的存储数据的形式。通过C语…

WebView与 JS 交互方式

一 前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现,今…

Vue路由使用的几个注意点

前言 在使用vue的路由的时候,是有几个需要注意的点,下面一一说明 组件的分类 组件分为两种:路由组件和一般组件 路由组件是注册到路由器中,并且是由路由相关标签代码进行展示 一般组件是注册到组件中,通过组件标签…

Linux常用命令——route命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) route 显示并设置Linux中静态路由表 补充说明 route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个…

【软件架构思想系列】从伟人《矛盾论》中悟到的软件架构思想真谛:“对象”即事物,“函数”即运动变化...

引子 形而上学和辩证法两种宇宙观是截然相反的。“所谓形而上学的或庸俗进化论的宇宙观,就是用孤立的、静止的和片面的观点去看世界。这种宇宙观把世界一切事物,一切事物的形态和种类,都看成是永远彼此孤立和永远不变化的”,“和形而上学的宇宙观相反,唯物辩证法的宇宙观主…

元宇宙与数字孪生有区别

在元宇宙爆红之前,有一项技术已经慢慢渗透到各行各业之中,它可以逼真、实时地还原现实世界,它就是——数字孪生。目前很多人认为元宇宙与数字孪生的区别不大,元宇宙是数字孪生在技术层面的进阶与优化。其实不然,元宇宙…

IMX Linux 用户手册 --- 2

IMX Linux 用户手册 — 2 第5章 启用单独仿真 可以在i.MX 6DualLite SABRE-SD和i.MX 6DualLite SABRE-AI板上启用单独仿真。这是通过使用 引导加载程序构建过程中的特定U-Boot配置。 当在i.MX 6DualLite SABRE平台上启用此单独仿真时,i.MX 6DualLite的功能将更改为…

高通开发系列 - MSM8909指示灯操作

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 最近在做内核升级,但是内核串口log始终无法打印,也不清楚是不是内核跑飞了还是什么原因,先尝试点亮一个LED灯来判断下。 这里面我们…

docker start启动容器不报错,却无法正常启动

问题描述:想启动 1e 这个容器 start后,没有报错,但是就是启动不了… 原因 查看一下日志 docker logs 1e1b85322dfa好家伙,虽然它运行命令的时候不报错,但是它运行错误信息写到日志里面去了,查看最新的日记信息看…