Python + Selenium + Chrome Driver 自动化点击+评论+刷弹幕(仅供学习)

简介: Python + Selenium + Chrome Driver 自动化点击+评论+刷弹幕(仅供学习)

Python + Selenium + Chrome Driver 自动化点击 评论 刷弹幕


首先说明,这篇博文仅供学习!仅供学习!仅供学习!


不要拿去做其他事,封号概不负责!!!


突发奇想


首先先说明刷评论或者阅读量是不行的,当我们认同这一点以后,我们再一起讨论一下技术


对于这个自动化评论来说,我有时候在想,是否有什么方法,可以自动发弹幕或者对一些博文进行自动评论,有什么方法呢


刷阅读量


首先可以介绍一下刷阅读量,在CSDN的博文中,我们会发现一个规律。CSDN博客并没有反爬虫的机制,因此,我们可以利用爬虫来增加自己的博文阅读量,但是需要让我们的爬虫“友好”一些,如果简单的访问,还是不行的,因为CSDN还是有设置两次访问的最短时间间隔的,因此,我们访问博文的时间间隔不能太短,太短的话阅读量是不会增加的。


除此之外,我也有在想,若想不受时间限制,是否可以轮换使用多个代理,也就是换自己的IP(假装用其他电脑进行访问),有可能这样一访问就是一个阅读量,如果大家感兴趣,下次可以做一个介绍

自动化评论


除了刷阅读量之外,我还在思考,有什么方法,可以自动化点击,自动化刷弹幕


奇思妙想


以CSDN为例的话,我一开始在想,有什么方法呢,但是出现一个问题,无法登录CSDN的账号,因为评论需要CSDN的账号,这一部分可能能够使用cookie,但是还是不行,如果我们能看网页源代码的时候,我们会发现,现在的CSDN的评论是JavaScript写的,所以是人机交互的,需要一个点击才能显示评论框,并且有时候是有ajex请求的


接着我就开始思考了,首先想到的就是利用selenium进行自动化操作,但是登录的时候,我人为进行登录,但是由于这是驱动器的Chrome,我人为滑也是不能通过验证的,我当时还发布了一个问题,这个问题当时烦恼了我很久



6a5fa46d6ce8454eb7df5be82ae7060b.png

结果,有个专家的回答,给了我一个灵感,可以用Selenium 连接已经打开的浏览器,这时候不就可以不用登录嘛



10aefd97f6fb44d78545386cbea2be88.png


这是一个非常聪明的想法,然后我就开始寻找资料,开始尝试和验证想法


环境配置


安装Selenium 库


可以简单介绍一下,Selenium 是为浏览器自动化(Browser Automation)需求所设计的一套工具集合,让程式可以直接驱动浏览器进行各种网站操作。

首先,我们需要安装我们的selenium库

其实方法是很简单的,只需要打开我们的控制台

pip install selenium


我当前下载的是4.4.3版本,之前有4.0之前的版本,有一些函数就有问题,不过这都是小事


配置Chromedriver

我们可以根据https://blog.csdn.net/kun_csdn/article/details/124267821这篇博客,描述的去进行配置我们的chromedriver、


chrome驱动器地址: http://npm.taobao.org/mirrors/chromedriver/


对于程序来说,如何让python代码找到驱动器,往往有两种方法


设置系统路径,这个在博客中有写。

或者代码设置,这一部分,就是在代码中加入驱动器的路径

如果配置成功,运行以下代码是成功的。

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
import time
time.sleep(5)
driver.quit()

这样就会自动启动一个浏览器,并且会自动打开百度页面

如果出现问题,要不然就是浏览器驱动版本未匹配,要不然就是系统路径没有设置好,这里就需要通过代码设置,在代码中加入驱动器的路径

所以这时候,我们就需要指定驱动器的绝对路径

driver = webdriver.Chrome(r'C:\xxx\chromedriver.exe')


如果遇到这种问题,selenium.common.exceptions.WebDriverException: Message: unknown Error: cannot find Chrome binary,可以参考以下博客 https://blog.csdn.net/weixin_43832437/article/details/118191412


自动化测试


到这一部分,我们就可以自动得到,模拟人自动打开浏览器,可以自动刷网页,这也是一个刷阅读量的方法;除此之外,也可以自动搜索,自动进行淘宝购物等等。


Selenium 库的主要函数介绍


现在已经对环境配置完成了,那我们就可以开始进行自动化测试了,在开始之前,我们需要明白selenium的一些函数和操作,我们前面有说明,selenium 是一款十分强大的Web应用自动化框架,我们可以通过它来自动操控浏览器。操控浏览器的实质是操控浏览器的界面元素,因此定位元素是使用selenium的关键,selenium中通过find_element方法来完成定位。


1.find_element的三种用法


(1)通过webdriver对象的find_element(“属性名”,“属性值”)

  • 如1:我们要定位一个属性id,值为"wang"的元素


find_element("id","wang")


如2:我们要定位一个属性class,值为"plant"的元素


find_element("class name","plant")


(2)通过webdriver对象的find_element_by_xx(" ")(在selenium的4.0版本中此种用法已经抛弃,不推荐使用)

如:定位id为username,class_name为password,tag_name为input的元素

find_element_by_id("username")
find_element_by_class_name("password")
find_element_by_tag_name("input")

但是这种方法,现在使用已经会报错,因为已经抛弃了


(3)通过webdriver模块中的By,以指定方式定位元素(这种方式才是比较常用的)


导入模块:from selenium.webdriver.common.by import By


如:定位id为username,class_name为password,tag_name为input的元素

from selenium.webdriver.common.by import By
find_element(By.ID,"username")
find_element(By.CLASS_NAME,"password")
find_element(By.TAG_NAME,"input")

2.find_element()和find_elements()的区别


(1)find_element()的返回结果是一个WebElement对象,如果符合条件的有多个,默认返回找到的第一个,如果没有找到则抛出NoSuchElementException异常。


(2)find_elements()的返回结果是一个包含所有符合条件的WebElement对象的列表,如果未找到,则返回一个空列表。


如果想详细学习,也可以看看这篇博客 https://blog.csdn.net/qq_54219272/article/details/123338773 ,已经包含了大部分的函数和方法。


解析网页源代码


首先,我们需要解析一下网页源代码,找到我们的element是什么,这样才能对浏览器进行操作


我的思路,就是点击下面的这几个图标,点击评论就会出现我们的评论框


6ab15b646b744fa39b7dfc0fefcb715f.png

这个是JavaScript人机互动出来的,这里需要用click进行点击即可


573b84e46aca42c695e2c72141861569.png


当出来以后,我们就可以找到评论框的元素,然后进行,输入我们提前设置好的文本,也就是我们的字符串,这一部分可以用send_keys进行输入

最后我们再找到评论这个按钮的元素,模拟点击即可,就可以完成整个流程


driver.find_element(By.CSS_SELECTOR,"[class='btn-comment btn-comment-input']").click() # 点击评论


这一部分代码可能不太好完整给出来,如果有意愿付费学习等等可以联系我


出现的问题和改进的一些方法


首先,在我们运行的时候,我们会发现一个问题,如果每次打开一个浏览器之后,我们需要首先手动进行登录,那是否可以直接控制一个已经登录的浏览器呢,或者说带cookie的浏览器呢。实际上是有的,之后的博客会介绍一下,如果使Chrome带配置项启动


其次,如果评论的比较频繁,也会被CSDN识别进行封号,并且CSDN现在也有查看无意义化的评论,希望有更多的高质量评论,不过这些是可以根据我们语料库进行判断然后选取的。


总结


我的代码框架是非常完善的,由于我们需要选取一定的好的博文进行评论

首先去排行榜,爬取排行榜上的博文的文章(包括全站排行榜,以及各个领域的排行榜)

得到各个网址之后,调用selenium来访问这些网页

自动化测试当前网页,进行评论,评论内容是使用自己设置的语料库进行随机选择。

等待一段时间以后,再进行评论下一个网页

设置评论的次数,评论达到阈值后,就退出浏览器。

最后再次说明


这篇博文仅供学习!仅供学习!仅供学习!

相关文章
|
12天前
|
安全 数据安全/隐私保护 Python
Python学习的自我理解和想法(27)
本文记录了学习Python第27天的内容,主要介绍了使用Python操作PPTX和PDF的技巧。其中包括通过`python-pptx`库创建PPTX文件的详细步骤,如创建幻灯片对象、选择母版布局、编辑标题与副标题、添加文本框和图片,以及保存文件。此外,还讲解了如何利用`PyPDF2`库为PDF文件加密,涵盖安装库、定义函数、读取文件、设置密码及保存加密文件的过程。文章总结了Python在处理文档时的强大功能,并表达了对读者应用这些技能的期待。
|
8天前
|
存储 搜索推荐 算法
Python学习的自我理解和想法(28)
本文记录了学习Python第28天的内容——冒泡排序。通过B站千锋教育课程学习,非原创代码。文章详细介绍了冒泡排序的起源、概念、工作原理及多种Python实现方式(普通版、进阶版1和进阶版2)。同时分析了其时间复杂度(最坏、最好、平均情况)与空间复杂度,并探讨了实际应用场景(如小规模数据排序、教学示例)及局限性(如效率低下、不适用于高实时性场景)。最后总结了冒泡排序的意义及其对初学者的重要性。
|
27天前
|
Python
Python学习的自我理解和想法(19)
这是一篇关于Python面向对象学习的总结,基于B站千锋教育课程内容编写。主要涵盖三大特性:封装、继承与多态。详细讲解了继承(包括构造函数继承、多继承)及类方法与静态方法的定义、调用及区别。尽管开学后时间有限,但作者仍对所学内容进行了系统梳理,并分享了自己的理解,欢迎指正交流。
|
14天前
|
Python
Python学习的自我理解和想法(26)
这是一篇关于使用Python操作Word文档的学习总结,基于B站千锋教育课程内容编写。主要介绍了通过`python-docx`库在Word中插入列表(有序与无序)、表格,以及读取docx文件的方法。详细展示了代码示例与结果,涵盖创建文档对象、添加数据、设置样式、保存文件等步骤。虽为开学后时间有限下的简要记录,但仍清晰梳理了核心知识点,有助于初学者掌握自动化办公技巧。不足之处欢迎指正!
|
25天前
|
数据采集 数据挖掘 Python
Python学习的自我理解和想法(22)
本文记录了作者学习Python第22天的内容——正则表达式,基于B站千锋教育课程。文章简要介绍了正则表达式的概念、特点及使用场景(如爬虫、数据清洗等),并通过示例解析了`re.search()`、`re.match()`、拆分、替换和匹配中文等基本语法。正则表达式是文本处理的重要工具,尽管入门较难,但功能强大。作者表示后续会深入讲解其应用,并强调学好正则对爬虫学习的帮助。因时间有限,内容为入门概述,不足之处敬请谅解。
|
21天前
|
索引 Python
Python学习的自我理解和想法(24)
本文记录了学习Python操作Excel的第24天内容,基于B站千锋教育课程。主要介绍openpyxl插件的使用,包括安装、读取与写入Excel文件、插入图表等操作。具体内容涵盖加载工作簿、获取单元格数据、创建和保存工作表,以及通过图表展示数据。因开学时间有限,文章简要概述了各步骤代码实现,适合初学者参考学习。如有不足之处,欢迎指正!
|
27天前
|
设计模式 数据库 Python
Python学习的自我理解和想法(20)
这是我在B站千锋教育课程中学习Python第20天的总结,主要涉及面向对象编程的核心概念。内容包括:私有属性与私有方法的定义、语法及调用方式;多态的含义与实现,强调父类引用指向子类对象的特点;单例设计模式的定义、应用场景及实现步骤。通过学习,我掌握了如何在类中保护数据(私有化)、实现灵活的方法重写(多态)以及确保单一实例(单例模式)。由于开学时间有限,内容简明扼要,如有不足之处,欢迎指正!
|
18天前
|
Python
Python学习的自我理解和想法(25)
这是一篇关于Python操作Word文档(docx)的教程总结,基于B站千锋教育课程学习(非原创代码)。主要内容包括:1) docx库插件安装;2) 创建与编辑Word文档,如添加标题、段落、设置字体样式及保存;3) 向新或现有Word文档插入图片。通过简单示例展示了如何高效使用python-docx库完成文档操作。因开学时间有限,内容精简,后续将更新列表和表格相关内容。欢迎指正交流!
|
25天前
|
Python
Python学习的自我理解和想法(23)
本文记录了学习Python正则表达式的第23天心得,内容基于B站麦叔课程。文章分为三个部分:1) 正则表达式的七个境界,从固定字符串到内部约束逐步深入;2) 写正则表达式的套路,以座机号码为例解析模式设计;3) 正则表达式语法大全,涵盖字符类别、重复次数、组合模式、位置、分组、标记、特殊字符和替换等知识点。总结中表达了对知识的理解,并欢迎指正。
|
27天前
|
定位技术 Python Windows
Python学习的自我理解和想法(21)
这是一篇关于Python文件操作的学习总结,基于B站千锋教育课程内容整理而成。文章详细介绍了文件操作的基础知识,包括参数(路径、模式、编码)、注意事项(编码一致性、文件关闭)以及具体操作(创建、读取、写入文件)。同时,深入解析了路径的概念,区分绝对路径与相对路径,并通过示例演示两者在实际应用中的差异。此外,还强调了不同模式(如"w"覆盖写入和"a"追加写入)对文件内容的影响。整体内容逻辑清晰,适合初学者掌握Python文件操作的核心技巧。