selenium.webdriver 使用中的几点小经验

Java爬虫之使用Selenium WebDriver 爬取数据 Selenium WebDriver简介一、安装部署二、Java项目中使用1.引入依赖2.示例代码三、WebDriver使用说明1.WebDriver定位器2.常用操作3.使用 cookie4.键盘与鼠标操作Selenium WebDriver 是一种用于自动化测试 Web 应用程序的工具。它提供了一种编程接口,允许开发人员编写代码以控制浏览器的行为和交互。这个工具在 Web 开发和测试中非常流行,因为它支持多种浏览器并且可以在不同的操作系统上运行。 阅读详情

selenium.webdriver 能绕过采取前端javascript加密的网站,也不必去考虑什么 iframe的框架关系,直接去读取最终显示的页面,虽然有他的笨重缺点,但是一招破百防,无招胜万招。

最近因为要爬一个前端javascript加密的网站数据,简单调试了一个爬虫python程序,把几点小经验记录一下。

1、python的爬虫调试过程,当然必选 Jupyter Notebook 了,chrome打开页面后,F12大法,随意查 xpath,随意遍历dom对象,不用重启程序,想修改什么查询,就修改什么查询。

2、我的chrome使用了绿色版(78.0.3904),最关键的原因是这个版本是能支持flash的最终版了,包括webdriver也都不在搜索路径中,所以要自定义程序路径:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

opt = Options()
opt.binary_location = "D:/chrome_x86/App/chrome.exe"
browser = webdriver.Chrome (executable_path="D:/chrome_x86/chromedriver.exe", options=opt)
browser.get("......")

3、页面的dom对象查询,虽然webdriver也提供了 find_element……功能,但是比起BeautifulSoup还是弱了些,所以还是:

    html_text = browser.page_source
    soup = BeautifulSoup(html_text, 'html.parser')

4、所寻找的dom对象,虽然F12可以找到,但是soup不能直接找到,然后发现是藏在<section>中了,先找到section,再在section中继续查找就能找到

sectionS  = soup.find_all("section")
section = sectionS[0]
labels = section.find_all("label")

5、网页跳转过程中,会有数据加载的过程,传统的办法是用time.sleep(…)等待一会。其实还可以用try…except…加上无限循环来解决,而且效果感觉更好。

6、上一点所说的,还包括click网页上的dom对象(比如button),有时会出现click错了dom对象,然后程序崩溃的问题,估计是chrome和webdriver不匹配,这时try…except…加无限循环,可以确保不管是加载没有完成,还是程序偶而不兼容,都能click上想要的button。下面的例子,是稳保能点上“返回”按钮的办法。

while True:
    try:
        btnS = browser.find_elements_by_xpath("//button")
        for bt in btnS:
            if "返回" in bt.text:
                bt.click()
                break
        break
    except:
        pass

7、怎么样读表格数据?因为碰到了虽然表格基本相同,但是表头还是有时有些差别的情况,这时候就不能直接数表格的格子数来取数据,而是要先读取表头,根据表头行,来取下面数据行的数据。

tr_line = subtable.find("……")
name_cols = {}
# 先读表头
td_S = tr_line.find_all("th")
for i, td in enumerate(td_S):
    name_cols[td.text] = i

# 再读数据行
tr_line_S = subtable.find_all(class_ = "……")
if len(tr_line_S) > 1:
    print ("--",len(tr_line_S),"--",end="")
for tr_line in tr_line_S:
    td_S = tr_line.find_all("td")
    # 根据表头,取具体的数据
    lbm = td_S[name_cols["……"]].text
    sliang = td_S[name_cols["……"]].text
    slv = td_S[name_cols["……"]].text

8、因为取得数据太多,程序有时会跑死,还得手工恢复现场。这是先看一下,记住Chrome跑死在哪个页面,重启程序里,在browser.get("…")之后,来个pause=input("PAUSE"),把程序暂停一下,再手工点击Chrome的内容,回到断掉的那一页,就可以继续爬下去了。数据也要时不时断点存储,以保证在断点处能进行恢复,存储数据,joblib.dump是我的最爱了。

【Selenium】selenium自动化入门之webdriver框架使用 Selenium篇如期而至,不同于前一个appium的系列,这个系列将直接带大家从selenium工具的入门到进阶 此外这一个系列的全部都将附带视频教学,需要视频教学的可以点击并输入暗号:优快云 那么就开始吧!!! 目录前言第 1章 webdriver1.1 操作浏览器基本方法前言1.1.1 打开网页1.1.2 设置休眠1.1.3 页面刷新2.1.4 页面切换1.1.5 设置窗口大小1.1.6 截屏1.1.7 退出1.1.8加载浏览器配置后话 前言 环境搭建就不讲了,博客、优快云上都有不少的教程,甚至B 阅读详情

相关推荐

Selenium Webdriver之Chrome浏览器操作小记

Selenium Selenium 是一套跨平台的浏览器自动化测试框架(工具),支持在多种系统环境、多种浏览器环境下使用,还可以使用多种编程语言来编写测试。 Selenium 有多个项目构成,形成了一个多功能的测试系统: Selenium Core:支持DHTML 的测试案例(效果类似数据驱动测试),它是Selenium IDE 和Selenium RC 的引擎。 Selenium Grid -...

Anyers的专栏 8164

设置Webdriver启动chrome为默认用户的配置信息

Webdriver 启动Chrome浏览器时,默认是打开一个新用户,而非默认用户。即新用户没有我们安装扩展程序。但在实际应用中,我们会须要 默认用户安装的一些扩展程序,比方对于某些js或者css样式。须要代理才干訪问成功,使用默认用户就显得尤为重要(由于你不可能在新用户在安装扩展程序再继续測试)。 如图: a)默认用户的扩展: 在锁定chrome的任务...

weixin_34037173的博客 1173

网络爬虫的爬取动态网页的技术、selenium的基本使用,selenium与WebDriver的安装

当爬取网页数据时,有些网页页面是通过JavaScript动态加载的,这就需要使用一些特殊的技术来处理这种情况。其中一个常用的技术就是使用Selenium来模拟浏览器行为来爬取动态网页。

ywsf13的博客 1644

Chrome webdriver 获取页面信息

test_txt = driver.page_source

qq_41048831的博客 2035

全国职业院校技能大赛-大数据应用赛项-数据挖掘-01

-----------------------推荐Top5结果如下--------------------------------------------第一条数据前10列结果展示为:----------------------------------------相同种类前10的id结果展示为:--------------------相似度top5(商品id:14,平均相似度:0.522356)相似度top1(商品id:1,平均相似度:0.983456)若属于该spu_id,则内容为1否则为0。

Eternity_04的博客 1954

使用python对创芯科技CANalyst-II分析仪进行二次开发(详细教程)

使用python对创芯科技CANalyst-II分析仪进行二次开发

ningqingzy的博客 1万+

java 文件对话框 过滤_java – Selenium关闭文件选择器对话框

我们在Jenkins盒子(运行linux)上使用Selenium-Webdriver来驱动Firefox来测试一个相当复杂的Web应用程序. Web应用程序需要上传照片进行测试,我们已经通过将sendkeys用于输入文件对话框来实现.不幸的是(可能由于上传器的工作方式,它是通过XHR而不是FORM帖子进行上传和上传)文件选择器对话框永远不会关闭.虽然这有点令人讨厌,但在过去,测试仍然没有通过.从s...

weixin_29209825的博客 432

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 298

Python+Selenium+Unittest 之selenium11--WebDriver操作方法1-常用操作

Web自动化学习

刘阿童木的博客 853

别再只调陀螺仪了!用OpenCV实现基于透视变换的EIS防抖,实测效果媲美手机

本文深入探讨了基于透视变换的EIS电子稳像技术,通过OpenCV实现高阶防抖算法,效果媲美主流手机厂商方案。详细解析了传统旋转平移模型的局限性,并展示了透视变换在复杂场景下的优势,包括数学原理、OpenCV实战代码及性能优化技巧,为视频防抖提供了专业解决方案。

weixin_42613501的博客 450

从格雷码到多频外差:结构光相位展开实战指南(附Python仿真代码)

本文深入探讨了结构光三维测量中的相位展开技术,重点对比了格雷码和多频外差法在工业检测、逆向工程等领域的应用。通过详细的原理图解和Python仿真代码,展示了两种方法在精度、抗噪性和适用场景上的差异,为实际工程中的技术选型提供实用指南。

weixin_42535703的博客 434

Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:...

一、使用一个全新的FireFox浏览器打开Web应用,浏览器不带任何插件,也未对浏览器做任何默认配置,但需要对浏览器属性进行配置 // 获取浏览器的所有配置文件 ProfilesIni allProfiles = new ProfilesIni(); // "Selenium" 是之前创建的profile,不带任何插件,也未对浏览器做任何默认配置 FirefoxProfile profi...

weixin_30325793的博客 236

一分钟理解 AP(Affinity Propagation) 亲和⼒传播算法

这篇博客发出来后,我用 Rust 复现代码出现问题。为此,我对对照了 sklearn 的相关代码,反复比较了两天,发现一处 bug,把 += 误写成了 =,导致数据量大的时候完全无法聚类。这个debug过程让我仔细梳理的 AP 算法的计算过程,今天我对这篇博客做了大规模修改,以便能原样展现原论文思想。

程序猿视角 3219

Selenium WebDriver使用经验杂记

(一) To Handle Ajax Selenium WebDriver在加载页面的时候,无论是driver.get(url)或者driver.getPageSource(),会立即返回当时页面的数据。但当代的网页技术都大量使用了异步Ajax调用,这使得许多DOM元素的创建和加载,都分布在页面load结束后的许多零散的时间点,让WebDriver的findElement经常无功而返。这个时

Ant Ren的专栏 1万+

从仿真到器件:铌酸锂电光调制器Comsol建模避坑指南

本文详细介绍了铌酸锂电光调制器在Comsol中的建模全流程,涵盖晶体切向选择、材料参数配置、多物理场耦合等关键技术。通过实战案例和调试技巧,帮助工程师避开常见建模陷阱,提升仿真精度与效率,特别适用于高速光通信系统的器件设计与优化。

m2n3b4v5c6的博客 419

《Zephyr OS 入门与实战》第5章:内存管理策略

【代码】《Zephyr OS 入门与实战》第5章:内存管理策略。

2301_79143213的博客 349

Python selenium webdriver 基本使用

Python selenium webdriver 基本使用

EXIxiaozhou的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Selenium Webdriver原理终于搞清楚了

前言 selenium1.x:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道。需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。Javascript可以获取并调用DOM的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。 这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对

专注自动化、性能测试、测试架构学习交流 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python selenium webdriver 爬虫 使用经验

利用selenium webdriver 爬取网页的时候 若数据做了反爬不好处理 就需要 模拟浏览器行为 -->操作dom-->获取数据 的方式。 前阵子做了一个百度 关键词库的爬虫脚本 有几点经验记录下来。方便以后直接用。 1、显示等待 from selenium import webdriver from selenium.webdriver.support.ui...

qq_35319282的博客 1230

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python使用Selenium Webdriver爬取网页所有内容

对于抓不到全部html内容的情况,我们能采取什么应对措施呢,本文介绍一种可行的方法,就是通过Selenium webdriver来模拟浏览器运行的方式,这样就可以做到在浏览器中看到是什么样,抓取的源码就是什么样,也就是可见即可爬。在浏览器中打开这个页面时,首先会加载这个HTML内容,接着浏览器会发现其中引入了一个app.js文件,然后便会接着去请求这个文件,获取到该文件后,便会执行其中的JavaScript代码,而JavaScript则会改变HTML中的节点,向其中添加内容,最后得到完整的页面。

hubing_hust的专栏 2万+

selenium webdriver使用

####多选框城市和。

weixin_39689854的博客 1225

使用Selenium Webdriver进行全屏截图

在任何网页测试人员中,执行效果最好的操作之一就是对网页进行截图。 每当测试人员发现并报告错误时,如果不支持该问题的屏幕截图甚至视频,就不会认真对待该错误。 不论您进行的测试类型是什么,包括硒自动化测试,都是如此。 在自动化测试中,特别是在典型的测试运行可能涉及数百个命令和测试用例的情况下,关键断言处的自动屏幕截图对于确保开发人员和测试人员确保按需执行每个测试用例都非常重要。 这些证明又被...

最佳 Java 编程 1万+

Selenium WebDriver - 其它

当页面刷新或页面上的项目移动时,页面上仍然有一个具有所需定位器的元素,它只是不再被正在使用的元素对象访问,并且必须重新定位该元素才能再次使用。元素对象是为给定的上下文存储的,所以如果您移动到不同的上下文——比如不同的窗口或不同的框架或iframe——元素引用仍然有效,但暂时无法访问。如果有一种简单的方法来比较一种颜色的十六进制表示和一种颜色的RGB表示,或者一种颜色的RGBA表示和一种颜色的HSLA表示,那不是很好吗?

AI工程化、开源分享、文档翻译、代码笔记 1604

如何使用Selenium WebDriver进行跨浏览器测试

This article was originally published on LambdaTest. Thank you for supporting the partners who make SitePoint possible. 本文最初在LambdaTest上发布 。 感谢您支持使SitePoint成为可能的合作伙伴。 Selenium is a popular automatio...

culi3182的博客 1917

关于Selenium WebDriver的geckodriver

Selenium作为网站UI测试利器,为黑盒功能测试人员所喜爱。 下载Selenium的最新版本地址:http://selenium-release.storage.googleapis.com/index.html 友情提示:如果一直下载不了,可能是浏览器与下载工具的没有兼容,或者没安装下载工具的插件。用IE浏览器打开,可以完整下载。如果没有这个问题就忽略。 时至今日,Seleni

软测之路其漫漫 5万+
上一篇: numpy的并行多进程处理
下一篇: chatgpt与图灵测试之间的思考
makefool
博客等级 码龄23年 54粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值