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

Python爬虫 selenium自动化 利用搜狗搜索爬取微信公众号文章信息

二、selenium爬虫 selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息。...(link) print('*' * 25) for i in range(10): get_news() if i == 9: # 如果访问到第十页则跳出循环...time.sleep(random.randint(3, 5)) # 点登录 browser.find_element_by_name('top_login').click() # 等待扫码登录上去 直到可以再点击下一页...browser.find_element_by_id("sogou_next").click() time.sleep(random.randint(3, 5)) # 直到不存在下一页...】 分享Python爬虫、数据分析、数据可视化、机器学习有关知识和实例;也分享实用的资料教程、软件工具、学习文档和简历模板。

3.2K30

selenium+python自动化86-循环点击遇到的坑

# 前言 selenium定位一组元素,批量操作循环点击的时候会报错:Element not found in the cache - perhaps the page has changed since...一、 分析问题 1.当页面上有点击行为的时候,页面是会刷新的,为了模拟页面刷新后查看元素是不是会变,我们可以用refresh刷新页面,然后查看刷新前后元素的变化。...点完之后,页面刷新了,然后页面上的元素已经发生变化了,第二次循环的时候还是用刷新前的元素去定位点击的,自然就会报错了。...二、 解决方案 1.针对页面刷新后,之前的元素失效问题,在for循环体里面可以重新定位一次,覆盖掉之前旧的就行了。...2.第一次获取全部元素后,通过len函数获取总个数 3.for循环的时候不要循环定位元素的list对象,换成range函数去循环 4.参考代码如下: ``` # coding:utf-8 from selenium

3.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Selenium自动化测试技巧

    例如,当您不想在开发人员和测试人员不了解的情况下更改代码时,请使用Class和ID定位器。另一方面,当其他团队进行测试时,可以使用链接文本来动态处理情况。最后,可以采用XPath可用于定位。...此外,它是一个面向对象的类,它充当被测应用程序页面的接口。为简化起见,PageObject是一种面向对象的设计模式,并且将网页定义为类。页面上的不同元素将成为变量。用户交互被用具体的方法实现。...网页=类别 页面上的各种元素=变量 用户互动=方法 PageObject的优点 通过较小的UI调整,它有助于建立一个健壮的框架。测试代码和页面代码是分开的。 它们可靠且易于维护。 该脚本是可读的。...隐式–指示WebDriver轮询DOM,直到完成对元素的搜索为止。默认情况下,时间设置为0。 sleep Thread.sleep()无论工作页是否准备就绪,都会在括号内指定的秒数内等待。...三) Selenium Python使用技巧(一) Selenium Python使用技巧(二) Selenium Python使用技巧(三) Selenium并行测试基础 Selenium并行测试最佳实践

    1.6K20

    Selenium Python使用技巧(三)

    书接上文和上上文: Selenium Python使用技巧(一) Selenium Python使用技巧(二) 处理不同情况的等待 在Selenium自动化测试中网页可能需要花费一些时间来加载,或者希望在触发测试代码之前可以看到页面上的特定...driver.quit() 网页中的滚动操作 在使用Selenium执行测试自动化时,您可能需要在页面上执行上滚/下滚操作的要求。...使用Selenium放大和缩小 为了在进行Selenium自动化测试时放大或缩小,应使用transformCSS属性(适用于相应的浏览器),该属性可让您在页面上执行放大,缩小,旋转,倾斜等操作。...支持以验证自动跨浏览器与Selenium自动化测试的兼容性,则需要更改被测浏览器的配置文件设置(在本例中为Firefox),并将更改应用于配置文件。...要更改代理设置,需要首先导入模块selenium.webdriver.common.proxy。

    1.7K30

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

    这个就需要你明白页面长得一样不代表就是同一张页面,就像两个人长得一样不一定是同一个人,他们的身份证号不同。页面,甚至页面上的元素都是有自己的身份证号(id)的。...跳转到了新的页面,但这张新页面上有一些元素跟之前页面是长得一样的,这也是一张新的页面了。...比如:一排分页按钮,你点击下一页跳转到了第二页,想要还用原来的元素操作到下一页,那也是不可能的了。...很简单: 只要刷新页面之后重新获取元素就行,不要提前获取一组元素,然后去循环操作每一个元素,这种情况还是获取元素的个数,然后在循环中获取相应位置的元素,在用的时候才去获取,这样你就获取到最新的id了,也不会出现找错人的尴尬了...总之一句话,遇到页面有变化的情况,不要去循环元素,去循环个数或者定位方式,在循环中获取元素。

    1.2K10

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

    您可以使用Selenium WebDriver来利用自动化进行錯誤的链接测试,而无需进行人工检查。 ? 当特定链接断开并且访问者登陆页面时,它将影响该页面的功能并导致不良的用户体验。...链接断开的主要原因 以下是发生链接断开(死链接或链接腐烂)的一些常见原因: 用户输入的网址不正确或拼写错误。 网站中具有URL重定向或内部重定向的结构更改(即永久链接)未正确配置。...在本Selenium WebDriver教程中,我们将演示如何使用Selenium WebDriver在Python,Java,C#和PHP中执行断开的链接测试。..."[Python] 使用Selenium在网页上查找错误的链接", "name" : "[Python] 使用Selenium在网页上查找错误的链接", "platform" : "Windows 10...print("Status of " + link.get_attribute('href') + " is " + str(request.status_code)) 重复执行同一组操作,直到用完页面上所有的

    6.7K10

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

    大家好,今天我们来讲点Selenium自动化,你是否有特别喜欢的公众号?你有思考过如何将一个公众号历史文章全部文章爬下来学习吗?现在我们以早起Python为例,使用Selenium来实现 ?...Selenium介绍 Selenium是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息。...跳转了下一页后可以发现不是所有的文章都由“早起Python”公众号推送。 ? 另外只能获取前10页100条的结果,中间需要微信扫码登录 ?...因此从这里开始,代码的执行逻辑为: 先遍历前10页100个文章的公众号名字,如果不是“早起Python”则跳过,是则获取对应的标题名字、发布日期和链接 第10页遍历完成后自动点击登录,此时人为扫码确定登录...然后就是重新遍历文章了,由于不知道最后一页是第几页可以使用while循环反复调用解析页面的函数半点击“下一页”,如果不存在下一页则结束循环 while True: get_news()

    2.5K21

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

    今天抽点时间总结下Selenium WebDriver找不到元素的情况。 当然这里说的是css或者XPath都没写错,定位准确,也并非使用了不稳定的定位语句。...其实呢是在操作的过程中页面发生了变化,刷新了,虽然表面上看起来两个元素长得一模一样,事实上是每一个元素都有自己的一个ID号。 用代码(Python)来证明!...比如:一排分页按钮,你点击下一页跳转到了第二页,想要还用原来的元素操作到下一页,那也是不可能的了。...我就使用了一个循环,但是最开始没细看,直接循环成了元素,到新页面验证完成之后又返回原来的页面继续定位,发现定位不了了;这时我才想起来不应该循环元素,应该循环元素的个数,在这个循环的过程中再来定位获取元素...可参考博文:Selenium使用之——添加等待时间的三种方式

    5.3K50

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

    ----  基本应用: 我用的是Python3、selenium2.53.5、PhantomJS Selenium(最新版本的Selenium已经不支持PhantomJS了,要想用请下载较低的版本)   ...的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。   ...因为 PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库,所以它不需要像 Python 的其他库一样安装,但我们可以通过Selenium调用PhantomJS来直接使用。...所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。     隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行。   ...() 9 driver.get("http://www.xxxxx.com/loading") 10 try: 11 # 页面一直循环,直到 id="myDynamicElement" 出现即返回

    2.3K70

    Python 自动化指南(繁琐工作自动化)第二版:十二、网络爬取

    图 12-6: XKCD,“浪漫、讽刺、数学和语言的网络漫画” 你的程序是这样做的: 加载 XKCD 主页 保存该页面上的漫画图像 跟随前面的漫画链接 重复,直到它到达第一个漫画 这意味着您的代码需要执行以下操作...您将拥有一个以值'https://xkcd.com'开始的url变量,并用当前页面的“上一页”链接的 URL 重复更新它(在一个for循环中)。在循环的每一步,你将在url下载漫画。...如果您遇到错误消息“geckodriver可执行文件需要在PATH中”,那么你需要手动下载 Firefox 的webdriver,然后才能用selenium来控制。...(例如,您可能会运行pip install --user -U selenium==3.14.1。) 在页面上查找元素 对象有很多方法来寻找页面上的元素。...在这个页面上,我们试图找到类名为'bookcover'的元素,如果找到这样的元素,我们使用tag_name属性打印它的标签名。如果没有找到这样的元素,我们打印一条不同的消息。

    8.7K70

    Clicknium:更强大的自动化工具,可用于爬取抖音动态网页数据

    Clicknium是一款基于Python和Selenium的自动化库,可以用于控制浏览器,实现网页自动化操作和数据爬取。...提供内置的录制器,可自动生成选择器,而Selenium需要手动编写XPath或CSS选择器定位元素。 支持桌面应用自动化,能够无缝连接Web和桌面应用,而Selenium只能自动化Web应用。...支持图像识别定位控件,有效弥补基于元素控件特征定位的缺陷,Selenium不支持此功能。...url browser.open(comment_url) # 等待页面加载完成 browser.wait(10) # 获取页面上显示的 json...则继续拼接 url 并重复上述步骤,直到没有下一页为止 上面这段代码的功能是使用 clicknium 库和 requests 库,通过代理IP访问抖音网页版,获取每个视频的评论数据,并打印出来。

    2.8K31

    python3 爬虫第二步Selenium 使用简单的方式抓取复杂的页面信息

    本文将会使用Selenium 进行一些简单的抓取,想要深入学习Selenium 可以查看我之前写过的 《selenium3 底层剖析》 上 下 两篇。...(64 位) 下载好驱动后,必须把驱动给配置到系统环境,或者丢到你python的根目录下。...('//*[@id="page"]/div/a[10]') nextbtn_element.click() 运行后发现成功跳转到第二页,接下来可以继续获取搜索栏的第一个对象,可以使用循环实现这个过程,我们设定去搜索前...,新增循环为遍历下一页以及获取第一个结果: #设置一个变量start start=1 #循环点击下一页 并且获取第一条数据 for _ in range(10): start+=10...,只有按钮的XPath有变化,所以更改了XPath。

    2.2K20

    初学web自动化测试--笔记1

    上述代码获得的browser就可以看作是浏览器对象。 获得了浏览器对象,看起来我们就可以操作了,但是,通常在一个页面上有很多的元素,我们需要操作的对象是这些元素,那么怎么识别这些元素呢?...因为 第一个参数其实就是js 代码,所以只有代码是正确的,基本都能执行。包括 点击事件,赋值,取值,更改属性等... 下面是一个简单的例子: #!...,估计是驱动的问题,要解决此问题,可以用js 输入,也可以配合get_attribute("value") 做一个verify ,确保输入值的正确性,如果不正确就一直输入,直到正确为止....当然了,也可以直接用js的方式定位到元素并点击 窗口切换: 我们经常遇到点击元素之后,在新的标签页打开了对应的内容,此时如果要在新的标签页继续进行操作,那么需要进行标签的切换, 但是在用selenium.../usr/bin/env python from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait

    1.1K40

    解读selenium webdriver

    驱动依赖 通过WebDriver,Selenium可以支持市面上所有主流的浏览器,如Chrom(ium)、Firefox、Internet Explorer、Opera和Safari。...如果你只打开了两个标签页或窗口,并且你知道你从哪个窗口开始,通过消除过程,你可以在WebDriver能看到的两个窗口或标签页上循环,并切换到不是原来的那个窗口。...您不需要切换就可以使用新窗口(或)标签页。如果你有两个以上的窗口(或)标签页被打开,而不是新窗口,你可以在WebDriver可以看到的两个窗口或标签页上循环,并切换到不是原来的那个窗口或标签页。...finally:     driver.quit() Python的WebDriver现在支持python上下文管理器,当使用with关键字时,它可以在执行结束时自动退出驱动程序。...如果名字或ID在页面上不是唯一的,那么第一个找到的名字将被切换到。

    6.7K30

    《最新出炉》系列入门篇-Python+Playwright自动化测试-15-playwright处理浏览器多窗口切换

    1.简介 浏览器多窗口的切换问题相比大家不会陌生吧,之前宏哥在java+selenium系列文章中就有介绍过。...2.测试场景 我们以访问百度为例,百度首页有多个选项,新闻,hao123网址导航,贴吧等多个选项,我们点击不同的选项,就会打开不同的新标签页。当打开多个标签页后, 如何切换到自己想要的页面上操作。...如下图所示: 3.多窗口切换方法 3.1Title切换 前边已经将所有的标签的title都循环出来了,我们只要切换到我们需要操作的title标签页即可。...如下图所示: 3.2URL切换 和title的思路类似:前边已经将所有的标签的title都循环出来了,我们只要切换到我们需要操作的url标签页即可。...如下图所示: 4.小结 本文主要介绍了playwright的页面切换,playwright切换页面不需要获取页面句柄,实现比selenium简单许多,是playwright对于selenium的一大优势

    1.1K40

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

    status=P' 使用工具:python+selenium 首先,很简单的,我们得使用selenium的webdriver去打开网址,自动实现打开网页,并且翻页: selenium环境确保搭建完毕(如果没有搭建好...,公众号python乱炖回复:selenium) 那我们就开始吧!...然后我们加入代码: browser.find_element_by_xpath("//*[@id='paginator']/a").click() (加个while循环,因为要翻多页) 但是我们发现操作结果...这样我们就能顺利爬取所有的评论了,我们现在只需要把每个页面上的评论保存下来即可: 这里我们为了保证格式工整,我们把评论做成表的形式,可以借用一下pandas的DataFrame这样一个数据格式,之后再保存为...提取的时候要把它放到while循环里,保证每页都提取到。

    73440

    使用Python轻松抓取网页

    如果您已经安装了Python但没有勾选复选框,只需重新运行安装并选择修改。在第二页上选择“添加到环境变量”即可。...例如,要输出此页面中的所有博客标题,就可以使用findAll()。在此页面上,会找到所有h2大小,且类属性为blog-card__content-title的博客标题。...如果您收到版本不匹配的消息,请重新下载正确的可执行网络驱动。 Part 3 定义对象和构建列表 Python允许编码人员在不指定确切类型的情况下设计对象。...最简单的选择之一是简单地重复上面的代码并且每次更改URL。但是那样很费时间,也会很枯燥。可以构建一个循环和一组要访问的URL。...尝试创建一个持久的循环,以设定的时间间隔重新检查某些URL并抓取数据。确保您获取的数据始终是最新的。 ●使用Python Requests库。

    13.9K20

    Python网络爬虫笔记(四):使用selenium获取动态加载的内容

    (一)  说明 上一篇只能下载一页的数据,第2、3、4....100页的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有页的href属性值。...使用selenium去模拟浏览器有点麻烦,例如有300页就要点300次(按博客园这种一页20条,也就是6000条数据。...要是几百万条,这个就得点好长时间了) 研究下有没有办法调用JS修改页面默认显示的数据条数(例如:博客园默认1页显示20条,改成默认显示1万条数据)。...获取所有随笔href属性的值,url只能传小类的,例如https://www.cnblogs.com/cate/python/ 13 def selenium_links(url): 14...expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, '#paging_block div.pager a:last-child'))) 27 #等待元素出现并返回list,这里定位的是页面上的随笔

    3.1K60
    领券