首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Selenium自动化|爬取公众号全部文章,就是这么简单

Selenium介绍 Selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息。...但如果直接使用Requests等直接请求,会涉及的反爬措施有cookie设置,js加密等等,所以今天就利用Selenium大法!...隐式等待是尝试发现某个元素的时候,如果没能立刻发现,就等待固定长度的时间driver.implicitly_wait(10),显示等待明确了等待条件,只有该条件触发,才执行后续代码,如这里我用到的代码...跳转了下一后可以发现不是所有的文章都由“早起Python”公众号推送。 ? 另外只能获取前10100条的结果,中间需要微信扫码登录 ?...因此从这里开始,代码的执行逻辑为: 先遍历前10100个文章的公众号名字,如果不是“早起Python”则跳过,是则获取对应的标题名字、发布日期和链接 第10遍历完成后自动点击登录,此时人为扫码确定登录

2.2K20

Selenium WebDriver找不到元素的三种情况

今天抽点时间总结下Selenium WebDriver找不到元素的情况。 当然这里说的是css或者XPath都没写错,定位准确,也并非使用了不稳定的定位语句。...在当前页面找不到这个元素了,但是你自己手动复制到页面开发者工具上查看明明有啊,为啥代码里面就找不到了呢?...其实呢是操作的过程中页面发生了变化,刷新了,虽然表面上看起来两个元素长得一模一样,事实上是每一个元素都有自己的一个ID号。 用代码(Python)来证明!...比如:一排分页按钮,你点击下一跳转到了第二,想要还用原来的元素操作到下一,那也是不可能的了。...提供的超时等待,implicitly_wait()方法 Python:driver.implicitly_wait(20) 添加智能等待时间,设置的时间内,默认每隔一段时间检测一次当前页面元素是否存在

5K50
您找到你想要的搜索结果了吗?
是的
没有找到

selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)

原因就在这里:你点击第二个时已经是新页面,当然找不到之前页面的元素。这时,他会问“可是明明元素就在那里,没有变,甚至我是回退回来的,页面都没有变,怎么会说是新页面?”。...页面,甚至页面上元素都是有自己的身份证号(id)的。...比如:一排分页按钮,你点击下一跳转到了第二,想要还用原来的元素操作到下一,那也是不可能的了。...很简单: 只要刷新页面之后重新获取元素就行,不要提前获取一组元素,然后去循环操作每一个元素,这种情况还是获取元素的个数,然后循环中获取相应位置的元素,在用的时候才去获取,这样你就获取到最新的id了,也不会出现找错人的尴尬了...总之一句话,遇到页面有变化的情况,不要去循环元素,去循环个数或者定位方式,循环中获取元素

1.1K10

.NET(C#)无头爬虫Selenium系列(02):等待机制

否则很容易"从入门到入狱" 本系列大部分案例同时采用 selenium 与 puppeteerSharp 讲解,并且有 Python 和 C# 2门语言的实现文章,详细请到公众号目录中找到。...,则通知你 如果找不到,下一秒继续 如果超过10秒都找不到,通知你 Selenium 的等待机制同样如此,而上述机制中唯一可以变化的就是"查找规则",这体现为 Wait.Until 的第一个参数接受一个...---- FindElements 无法等待的原因 这次项目自带 web 服务,启动调试会先启动 web 服务,浏览器中输入本机 ip 即可浏览本文案例网页,操作看视频: vs 启动调试后,打开浏览器...这里的根本问题在于,wd.FindElements 面上找不到任何符合条件的元素,但是 wait 对象却没有重复查找 这是因为,wait 对象中的逻辑是,委托中的调用返回 null 或有异常,才被识别为继续等待...(点击、发送文本、找元素、找所有元素),这些方法自带等待功能,默认使用 css 选择器 我已经简单制作了一个,nuget安装即可: Install-Package CrystalWind.SeleniumWrapper

2.3K40

Python无头爬虫Selenium系列(01):像手工一样操作浏览器

否则很容易"从入门到入狱" 本系列大部分案例同时采用 selenium 与 pyppeteer 讲解,并且有 Python 和 C# 2门语言的实现文章,详细请到公众号目录中找到。...:"用代码操作浏览器",下面看看整个流程: Python 代码通过 selenium ,控制"浏览器驱动"程序(一个 exe 文件) "浏览器驱动"程序则发送指令操控"浏览器" 但是,市面上存在各种浏览器...他有如下优点: selenium 已经开发很久,相对来说比较稳定 selenium 各个语言的都是有 google 开发维护,因此不会出有些问题只 Python 版本出现 selenium 相比...,如下 无法执行网站 js 代码之前,执行自己的 js 代码 无法登录阶段控制浏览器让人工登录获得 cookies,后续直接请求获得数据 如果你认为无法接受 selenium 的缺点,可以查看 pyppeteer...他的意思是,他找不到"浏览器驱动" 的确,刚刚我们把驱动下载下来,但是 Python 怎么可能会知道去哪里找到那个驱动程序呢。

2.3K20

Python无头爬虫Selenium系列(01):像手工一样操作浏览器

搜索并采集结果的标题 需求如下: 打开百度搜索主页 输入框输入搜索内容(比如"爬虫") 点击"百度一下"按钮,进行搜索 把结果页面中的第一的各个结果的主标题抓取下来 Selenium 的麻烦之处 本系列始终围绕一点开展...:"用代码操作浏览器",下面看看整个流程: Python 代码通过 selenium ,控制"浏览器驱动"程序(一个 exe 文件) "浏览器驱动"程序则发送指令操控"浏览器" 但是,市面上存在各种浏览器...他有如下优点: selenium 已经开发很久,相对来说比较稳定 selenium 各个语言的都是有 google 开发维护,因此不会出有些问题只 Python 版本出现 selenium 相比...,如下 无法执行网站 js 代码之前,执行自己的 js 代码 无法登录阶段控制浏览器让人工登录获得 cookies,后续直接请求获得数据 如果你认为无法接受 selenium 的缺点,可以查看 pyppeteer...他的意思是,他找不到"浏览器驱动" 的确,刚刚我们把驱动下载下来,但是 Python 怎么可能会知道去哪里找到那个驱动程序呢。

3.3K30

使用selenium自动秒抢淘宝商品(附详细入门指南)

selenium有多种编程语言的客户端驱动,编写自动化脚本语法简洁,其中pythonselenium便非常的受欢迎。...演示自动打开淘宝网(文末会有秒抢流程): 使用Selenium实现自动化测试,需要3个要素: 1.selenium客户端或者与特定编程语言绑定的客户端驱动,可以是python,java,js等;...2.浏览器驱动, 这个驱动是根据不同的浏览器开发的,不同的浏览器使用不同的webdriver驱动程序且需要对应相应的浏览器版本; 3.浏览器,目前selenium支持市面上大多数浏览器,如:火狐,IE...selenium操作浏览器 notebook中进行selenium的脚本编写,可以随写随调,非常方便。...定位元素 因为selenium是模仿真实点击浏览器的行为,所以必须要先定位网页元素,才能进行各种操作。

2.2K60

Selenium2+python自动化29-js处理多窗口

前言 在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样多个窗口之间来回切换比较复杂,那么有没有办法让新打开的链接在一个窗口打开呢...三、去掉target="_blank"属性 1.因为此链接元素target="_blank",所以打开链接的时候会重新打开一个标签,那么解决这个问题,去掉该属性就可以了。...3.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签打开。 ?...四、js去掉target="_blank"属性 1.第一步为了先登录,我这里加载配置文件免登录了(不会的看这篇:Selenium2+python自动化18-加载Firefox配置) 2.这里用到js的定位方法...五、参考代码 # coding:utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys

1.4K40

10分钟教你如何自动化操控浏览器——Selenium测试工具

Selenium这个到底能干什么?...(如果看不清可以右键用新标签打开图片查看放大) ? 定睛一瞅,我们就能感觉到Selenium的强大,尤其是大厂里,自动化测试方面,Selenium成为最为有效的自动化工具。...WebDriverWait # 等待页面加载某些元素 3.实例应用 1)打开浏览器,检索框中输入Python并检索。...XPath 是一门 XML 文档中查找信息的语言。XPath 用于 XML 文档中通过元素和属性进行查找。   ...再看一点requests请求能不能执行js?是不是不能呀!那么如果你的网站需要发送ajax请求,异步获取数据渲染到页面上,是不是就需要使用js发送请求了。那浏览器的特点是什么?

5K30

Python秒杀脚本】淘宝或京东等秒杀抢购

,抢购脚本就是通过Selenium来完成自动登录和自动购买的操作的。...2.Seleuinm安装 Selenium模块是Python的第三方,可以通过pip进行安装 pip install seleniumpython中导入 3.淘宝秒杀脚本 from selenium...webdriver import datetime import time # 连接Chrome浏览器 driver = webdriver.Chrome() def login(url): # 打开淘宝登录...import webdriver import datetime import time def login(): # 打开淘宝登录,并进行扫码登录 browser.get("https...通过selenium实现毫秒级自动抢购的示例代码,通过扫码登录即可自动完成一系列操作,抢购时间精确至毫秒,可抢加购物车等待时间结算的,也可以抢聚划算、火车票等的商品。

3.7K40

七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录 每天一个小实例1(动态页面模拟点击,并爬取你想搜索的职位信息) 每天一个小实例2(模拟网站登录)我用的是

----  基本应用: 我用的是Python3、selenium2.53.5、PhantomJS Selenium(最新版本的Selenium已经不支持PhantomJS了,要想用请下载较低的版本)   ...可以从 PyPI 网站下载 Seleniumhttps://pypi.python.org/simple/selenium ,也可以用 第三方管理器 pip用命令安装:pip install selenium...因为 PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python ,所以它不需要像 Python 的其他一样安装,但我们可以通过Selenium调用PhantomJS来直接使用。...WebDriver 有点儿像可以加载网站的浏览器,但是它也可以像 BeautifulSoup 或者其他 Selector 对象一样用来查找页面元素,与页面上元素进行交互 (发送文本、点击等),以及执行其他动作来运行网络爬虫...1 from selenium import webdriver 2 from selenium.webdriver.common.by import By 3 # WebDriverWait

2.2K70

如何使用Selenium WebDriver查找错误的链接?

您可以使用Selenium WebDriver来利用自动化进行錯誤的链接测试,而无需进行人工检查。 ? 当特定链接断开并且访问者登陆面时,它将影响该页面的功能并导致不良的用户体验。...404面不存在) 资源(或页面)服务器上不可用。 408(请求超时) 服务器已超时等待请求。客户端(即浏览器)可以服务器准备等待的时间内发送相同的请求。...410(已去) HTTP状态代码比404(找不到页面)更永久。410表示该页面已消失。该页面服务器上不可用,也未设置任何转发(或重定向)机制。指向410的链接将访问者发送到无效资源。...Selenium WebDriver教程中,我们将演示如何使用Selenium WebDriverPython,Java,C#和PHP中执行断开的链接测试。..."[Python] 使用Selenium在网页上查找错误的链接", "name" : "[Python] 使用Selenium在网页上查找错误的链接", "platform" : "Windows 10

6.5K10

UI自动化问题汇总

,目前selenium支持市面上大多数浏览器,不同的浏览器使用不同的webdriver驱动程序且需要对应的浏览器版本 1....你自动化工作中,遇到了什么问题 答: 主要有以下几点: 频繁地变更UI,经常要修改页面对象里面代码 运行用例报错和处理,例如元素不可见,元素找不到这样异常 测试脚本复用,尽可能多代码复用 一些新框架产生的页面元素定位问题...什么是页面加载超时 答: Selenium中有一个 Page Load wait的方法,有时候,我们执行脚本的速度太快,但是网页程序还有一部分页面没有完全加载出来,就会遇到元素不可见或者元素找不到的异常...但是这个是有限制,例如当前页面高度太长,默认是上半部分,你定位的元素尾,这个时候可能就会报元素不可见的异常。我们就需要利用javaScript来实现拖拽页面滚动条。...Selenium需要连接数据进行数据校验吗 答: UI自动化不需要 接口测试会需要 1.

3.3K61

爬虫篇|动态爬取QQ说说并生成词云,分析朋友状况

) # 很多时候网页由多个或组成,webdriver默认定位的是最外层的frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素...,没有掌握的自己再去复习一下 .Python爬虫:学习Selenium并使用Selenium模拟登录知乎 爬取说说的完整代码 #coding:utf-8 import time from selenium...driver.get("http://i.qq.com") # 所以这里需要选中一下frame,否则找不到下面需要的网页元素 driver.switch_to.frame("login_frame"...) # 很多时候网页由多个或组成,webdriver默认定位的是最外层的frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素...并且存到了同级目录中 生成词云 生成词云需要用到的: wordcloud, 生成词云 matplotlib, 生成词云图片 jieba ,这个可用可不用,但我因为中文一直显示不出来,后来加上了这个

84410

Python爬虫:动态爬取QQ说说并生成词云,分析朋友状况

) # 很多时候网页由多个或组成,webdriver默认定位的是最外层的frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素...,没有掌握的自己再去复习一下 .Python爬虫:学习Selenium并使用Selenium模拟登录知乎 爬取说说的完整代码 #coding:utf-8 import time from selenium...driver.get("http://i.qq.com") # 所以这里需要选中一下frame,否则找不到下面需要的网页元素 driver.switch_to.frame("login_frame"...) # 很多时候网页由多个或组成,webdriver默认定位的是最外层的frame, # 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素...并且存到了同级目录中 生成词云 生成词云需要用到的: wordcloud, 生成词云 matplotlib, 生成词云图片 jieba ,这个可用可不用,但我因为中文一直显示不出来,后来加上了这个

1.5K10

利用selenium爬取《西虹市首富影评》

status=P' 使用工具:python+selenium 首先,很简单的,我们得使用selenium的webdriver去打开网址,自动实现打开网页,并且翻页: selenium环境确保搭建完毕(如果没有搭建好...,公众号python乱炖回复:selenium) 那我们就开始吧!...但是只能看到20条,如果想看到后面的,就必须进行翻页,这个时候,我们就需要进行元素定位了 我们打开网页,查看翻页元素的位置: 经过审查元素,我们发现,“后”这个点击的其实是隶属于一个id=“paginator...发现问题了,原来是没登录导致的无法查看。 那就意味着我们就要开始自动登录豆瓣了哦! 首先打开登录进行登录登录完切换到评论,获取评论。...(loginurl) 打开登录之后我们需要输入用户名和密码,审查一下输入框的元素: 看到了元素的id之后我们就可以获取他们并且传值了: # 获取用户名输入框,并先清空 browser.find_element_by_name

70440

Python无头爬虫Selenium系列(02):等待机制

否则很容易"从入门到入狱" 本系列大部分案例同时采用 selenium 与 pyppeteer 讲解,并且有 Python 和 C# 2门语言的实现文章,详细请到公众号目录中找到。...---- 机制 想象一下如果是一个机器人帮你从网页上查找某个信息,比较合理的流程是: 让机器人每隔1秒到页面上"按规则"找一下 如果找到,则通知你 如果找不到,下一秒继续 如果超过10秒都找不到,通知你...启动网站服务如下(jupyter notebook 为例子): 打开 web_run.ipynb 文件 执行第一个 cell 的代码,直到下方出现"serving at port 8081" 打开浏览器,...用"开发者工具",查看元素的标签: 每个新增的内容为一个 div 标签,属性 class 都是 "content" 现在用代码控制 Selenium ,找上述的 div 标签。...,此时我们可以"下级函数"中使用"上级函数"的参数 css_selector 。

1.3K20

python 爬虫之selenium可视化爬虫

前文回顾 一文带你了解Python爬虫(一)——基本原理介绍 一文带你了解Python爬虫(二)——四种常见基础爬虫方法介绍 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的爬虫方式...用python写爬虫的时候,主要用的是selenium的Webdriver, #安装selenium pip install selenium #安装对应浏览器驱动 # 我们可以通过下面的方式先看看Selenium.Webdriver...username) # 找到密码输入密码 pwd=drive.find_element_by_id("LoginForm_password") pwd.send_keys(password) # 点击登录按钮实现登录...判断某个元素的选中状态是否符合预期 element_located_selection_state_to_be 判断某个元素的选中状态是否符合预期 alert_is_present 判断页面上是否存在...alert框 2.隐式等待 隐式等待是尝试定位某个元素时,如果没能立刻发现,就等待固定时长 类似于socket超时,默认设置是0秒,即相当于最长等待时长 浏览器界面直观感受是: 等待直到网页加载完成

1.9K61

selenium爬虫遇到弹窗——iframe定位

目录 问题描述 原因分析 解决方案 总结 问题描述 如上图所示,为某数据网站,自动登录时,点击登录button会出现弹窗让你输入账号密码,此时定位输入框send_keys发送参数,报错信息如下:找不到元素...下再对页面元素进行操作(大致可以理解为,及一个页面里嵌套了一个页面,而selenium的操作网页的原理是依靠窗口句柄,当前句柄在外面窗口,定位元素在内部窗口,所以无法定位到元素。...关于selenium的句柄切换详见下一篇文章,还没写!后面整理下再写,跟本次所要讲的切换类似又有点儿差异,有兴趣的可以百度一下,有前辈们贡献过!...#跳出iframe drive.switch_to_default_content() #如果不跳出再次进入iframe也会报错,找不到元素,相当于iframe里找一个iframe 如果driver.switch_to_frame...版本:3.141.0;chrome版本:76.0.3809,两种写法都可以】 总结 #定位iframe #也可以用其他属下定位同selenium常用定位方法,即iframe本身也是一个元素 iframe

84710
领券