🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝
🥰 博客首页:knighthood2001****
😗 欢迎点赞👍评论🗨️
❤️ 热爱python,期待与大家一同进步成长!!❤️
👀给大家推荐一款很火爆的刷题、面试求职网站👀
跟我一起来巩固基础、开启刷题之旅吧
这篇文章笔者拖了很久(教程有些内容我自己都试着试着给忘了),现在终于有一种实现方式了。
注:文章仅供参考哦,只是技术分享!!
前言(也是一个令人困惑的问题)
首先,C站实现三连(**点赞、收藏、评论**)是需要先登录的,而且由于是浏览器,笔者一开始想到的是使用selenium,因此就需要之前笔者写过的内容作为基础
Selenium操作已经打开的Chromehttps://blog.csdn.net/knighthood2001/article/details/126778424?spm=1001.2014.3001.5502 接着如下,查找并copy了C站三连相应的xpath或selector,代码如下
发现报错,定位不到相应的元素,试了多种定位,还是报错,后来在 csdn上 找了相应的内容(给文章点赞),试了一下发现还是不行。
笔者尝试,发现左侧部分可以正常定位与点击,右边部分(main部分)则不行,也试过查找嵌套iframe,还是不行。因此笔者猜测是由于main上面的script
如果大家能帮忙的,希望帮忙解答一下。
正题
上述过程经历了好久,笔者果断放弃了。然后刚开始不太看好**uiautomation**的,所以使用**uiautomation**的尝试非常迟(笔者当时使用inspect.exe看了,发现点赞这些按钮不是真正意义上的按钮,而是文本和链接类型的,所以比较难搞),后来慢慢的只能硬着头皮上了,发现成功了。
因此给大家写下这篇!!
模块准备
import time
import uiautomation as auto
import random
定义chrome控件
chrome = auto.PaneControl(ClassName="Chrome_WidgetWin_1")
chrome_specific = chrome.DocumentControl(ClassName="Chrome_RenderWidgetHostHWND")
随机评论库
word = ['文章写的很棒呀,支持', '博主写的太棒了吧,期待后续', '学到了学到了,感谢大佬分享']
笔者目前写的比较少。
思路讲解
** **
笔者尝试过很多方法定位该列表,最终失败了,突然发现可以通过先定位打赏,然后在定位其他的控件,试了后发现效果也还行。
# 通过找到打赏控件,从而找到其他控件
dashang = chrome_specific.HyperlinkControl(Name='打赏')
# 三连控件的父类
all = dashang.GetParentControl().GetParentControl()
点赞
# 点赞
dianzan = all.GetFirstChildControl().Click()
收藏
在收藏控件查找过程中,也发现其比较难找,因此笔者尝试通过查找默认收藏夹来定位收藏按钮(后来发现只要点击这一行就能实现点击,无需指定收藏按钮)
# 收藏
shoucang = all.GetChildren()[2].Click()
time.sleep(1)
# 通过默认收藏夹找到对应的收藏按钮
mr = chrome_specific.TextControl(Name="默认收藏夹")
shoucang_btn = mr.GetParentControl().GetLastChildControl()
shoucang_btn.Click()
评论
# 评论部分
time.sleep(1)
pinglun = all.GetChildren()[4].Click()
auto.SendKeys(random.choice(word))
auto.SendKeys("{ctrl}{shift}{Enter}")
点击评论按钮后,光标出现,你只需要打字即可,在调用随机评论库,就能实现评论了。接着我们使用**ctrl+shift+enter**即可发送评论。还是挺便捷的。
全部代码展示
import time
import uiautomation as auto
import random
chrome = auto.PaneControl(ClassName="Chrome_WidgetWin_1")
chrome_specific = chrome.DocumentControl(ClassName="Chrome_RenderWidgetHostHWND")
word = ['文章写的很棒呀,支持', '博主写的太棒了吧,期待后续', '学到了学到了,感谢大佬分享']
# 通过找到打赏控件,从而找到其他控件
dashang = chrome_specific.HyperlinkControl(Name='打赏')
# 三连控件的父类
all = dashang.GetParentControl().GetParentControl()
# 点赞
dianzan = all.GetFirstChildControl().Click()
# 收藏
shoucang = all.GetChildren()[2].Click()
time.sleep(1)
# 通过默认收藏夹找到对应的收藏按钮
mr = chrome_specific.TextControl(Name="默认收藏夹")
shoucang_btn = mr.GetParentControl().GetLastChildControl()
shoucang_btn.Click()
# 评论部分
time.sleep(1)
pinglun = all.GetChildren()[4].Click()
auto.SendKeys(random.choice(word))
auto.SendKeys("{ctrl}{shift}{Enter}")
**前期的思考 **
笔者刚开始是采用定位点去实现点赞功能的,通过将**网页缩放为67%**,实现点赞,不过后来发现csdn最下面栏会有差别(是否出现专栏目录),因此最后定位会有差别,因此笔者想的是通过判断**专栏目录控件**是否存在,如果存在,则使用这一套定位的点,如果不是则使用另外一套定位。
例:auto.Click(677, 985)与auto.Click(707, 985)
结尾
希望有人能回答一下我的问题,希望这篇文章能给大家带来帮助!!
版权归原作者 knighthood2001 所有, 如有侵权,请联系我们删除。