当前位置:   article > 正文

自动化脚本练习------论坛自动回关_论坛自动回帖脚本

论坛自动回帖脚本

目录

总体功能描述:

环境配置:

代码简述

总代码:

坑:

项目文件:


互粉多是一件美事,但手动回关,总是不够及时,显得我们没有诚意,而且,懒惰是程序猿的优秀品质,为了将这种精神发扬光大,我写了如下一篇脚本。

总体功能描述:

  • 登录后查看新关注自己的好友(打开脚本后需要手动扫码登录,暂时还没有解决csdn用chromedriver 登录时滑动验证码不通过的问题,手动滑动也会验证失败如果你知道怎么解决请务必,私信我指教一下我!!!)
  • 对新增粉丝列表中的UU进行回关:

如果是已经关注就跳过,未关注就点击回关。并且打开这位朋友的主页,给第一篇文章点一个赞,(虽然没有看文章,但是咱的人情最起码是送到了)

  • 挂在后台,持续扫描新增粉丝列表,并实时回关点赞。(关注我,我秒回,hhh,看到这里是不是想关注我试试看呢?,如果你有服务器的话,可以挂在服务器上24小时不间断的运行了)

环境配置:

  1. chrome浏览器以及chrome driver,需要版本一致。话不多说,上链接:

chrome driver下载地址:

CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?path=chromedriver/

建议将谷歌浏览器更新到最新版,并且下载最新的chrome driver。

2.配置charom driver环境变量:

将exe文件的地址复制,加在这理

 3,python 环境

这里就不多说了,可以自行百度

代码简述

 这里是用到的模块,灰色是因为没有破解滑动验证码,删掉了自动登录的部分。后续补充。

主要是selenium,可以定位到浏览器中的元素,并进行操作。

这部分是在新增好友界面,查看是否有新关注的好友。

这部分是进入关注自己的UU的界面,对他的文章行get like。

这里是一个等待用户扫码登录的逻辑,用户扫码后会跳出循环。

这里是登录后跳转到新增列表,并且保存相关链接,用于再次回到此界面。以及每隔20秒刷新查看有无新增关注。 

总代码:

  1. import random
  2. from selenium import webdriver # 用来驱动浏览器的
  3. from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片
  4. from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR
  5. from selenium.webdriver.common.keys import Keys # 键盘按键操作
  6. from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的
  7. from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
  8. from selenium import webdriver
  9. from selenium.webdriver.common.by import By
  10. from selenium.webdriver.common.keys import Keys
  11. from selenium.webdriver.support import expected_conditions as EC
  12. from selenium.webdriver.support.wait import WebDriverWait
  13. import time
  14. import datetime
  15. import sys
  16. def care_new(num):
  17. # 寻找新增粉丝,默认num个
  18. for i in range(num - 1):
  19. try:
  20. care_button = browser.find_element(By.CSS_SELECTOR,
  21. f"ul[class='list']>li:nth-child({i + 1})>div:nth-child(3)> :nth-child(1)")
  22. fan = browser.find_element(By.CSS_SELECTOR,
  23. f"ul[class = 'list']>li:nth-child({i + 1})> :nth-child(2)> :nth-child(1) :nth-child(1)")
  24. finally:
  25. pass
  26. print("tag" + care_button.text)
  27. if care_button.text == "回关":
  28. care_button.click()
  29. print("你回关了" + fan.text + " ----" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  30. name = str(fan.text)
  31. # 进入关注者主页
  32. # fan.click()
  33. time.sleep(2)
  34. print(fan.get_attribute("href"))
  35. browser.get(fan.get_attribute("href"))
  36. time.sleep(2)
  37. give_like(name)
  38. else:
  39. print("你已经关注过" + fan.text + "了,无需再次关注")
  40. return
  41. def give_like(name):
  42. # 给他一个赞 title = browser.find_element(By.XPATH, '//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/div/div[
  43. # 1]/article/a')
  44. # title = browser.find_element(By.CSS_SELECTOR,
  45. # "div[class = 'mainContent']>div:nth-child(1)> :nth-child(1)> :nth-child(1) :nth-child(1) :nth-child(1)")
  46. print("kaisidianzan")
  47. try:
  48. title = browser.find_element(By.CSS_SELECTOR, "article > :nth-child(1)")
  49. except:
  50. print("没找到" + name + "的文章")
  51. else:
  52. time.sleep(1)
  53. print("href" + title.get_attribute("href"))
  54. browser.get(title.get_attribute("href"))
  55. time.sleep(1.5)
  56. try:
  57. islike = browser.find_element(By.ID, 'is-like')
  58. # // *[ @ id = "is-like"] / a
  59. time.sleep(1.5)
  60. except:
  61. print("没找到点赞按钮")
  62. else:
  63. islike.click()
  64. print("你点赞了" + name + "的文章")
  65. time.sleep(1)
  66. finally:
  67. pass
  68. finally:
  69. pass
  70. try:
  71. title = browser.find_element(By.TAG_NAME, "")
  72. time.sleep(1)
  73. print("tag2" + title.tag_name)
  74. except:
  75. print("meizhaodao")
  76. else:
  77. time.sleep(1)
  78. print("tag1" + title.tag_name)
  79. finally:
  80. # 回到关注列表
  81. browser.get(fans_link)
  82. time.sleep(3)
  83. return
  84. if __name__ == '__main__':
  85. fans_link = ""
  86. browser = webdriver.Chrome() # 括号中填写chromedriver驱动的路径
  87. browser.maximize_window()
  88. try:
  89. # 加载CSDN 登录地址
  90. browser.get("https://passport.csdn.net/login?code=applets")
  91. # 等待扫码登录
  92. ok = True
  93. while ok:
  94. try:
  95. isok = browser.find_element(By.XPATH, '//*[@id="csdn-toolbar"]/div/div/div[3]/div/div[1]/a')
  96. except:
  97. ok = False
  98. else:
  99. try:
  100. # print(isok.text)
  101. if isok.text == "登录/注册":
  102. ok = True
  103. else:
  104. ok = False
  105. except:
  106. ok = False
  107. time.sleep(0.5)
  108. time.sleep(2)
  109. # 登陆成功
  110. mess = browser.find_element(By.ID, "toolbar-remind")
  111. time.sleep(1)
  112. # 点击进入消息
  113. mess.click()
  114. # 进入新增粉丝页面
  115. new_fans = browser.find_element(By.XPATH, '// *[ @ id = "app"] / div / div[1] / ul / li[2] / a / span')
  116. fans_link = browser.find_element(By.XPATH, '// *[ @ id = "app"] / div / div[1] / ul / li[2] / a').get_attribute(
  117. "href")
  118. new_fans.click()
  119. time.sleep(1)
  120. # 查看前十个
  121. first = True
  122. care_new(8)
  123. while True:
  124. if first:
  125. care_new(8)
  126. # 20s查看一次
  127. browser.get(fans_link)
  128. time.sleep(20)
  129. finally:
  130. print("完了,报错了")

坑:

*进入新的界面后一定要尽量用get(url)的方式,这样只是在当前页面刷新,而不是新建标签页,click跳转界面后很容易出现定位不到UI元素的情况。

*预留足够的时间,进行页面加载。

项目文件:


链接:https://pan.baidu.com/s/17a07JnLZjSvsarED0lRn2A?pwd=z3x4 
提取码:z3x4

*项目使用说明:

解压文件后记得添加chormdriver 路径到 系统环境变量path

Automessage\Autocsdn\dist下的exe文件可以直接运行,如果报错请检查环境变量以及chrom浏览器版本,这是我的版本。(在chrom浏览器地址栏输入,chrome://version/ 可以显示类似下图版本信息。

欢迎各位大佬留言私信,指点不足。后续部署到服务器端,欢迎来关注验证。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/619762
推荐阅读
相关标签
  

闽ICP备14008679号