赞
踩
目录
互粉多是一件美事,但手动回关,总是不够及时,显得我们没有诚意,而且,懒惰是程序猿的优秀品质,为了将这种精神发扬光大,我写了如下一篇脚本。
如果是已经关注就跳过,未关注就点击回关。并且打开这位朋友的主页,给第一篇文章点一个赞,(虽然没有看文章,但是咱的人情最起码是送到了)
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秒刷新查看有无新增关注。
- import random
-
- from selenium import webdriver # 用来驱动浏览器的
- from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片
- from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR
- from selenium.webdriver.common.keys import Keys # 键盘按键操作
- from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的
- from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
-
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.wait import WebDriverWait
- import time
- import datetime
- import sys
-
-
- def care_new(num):
- # 寻找新增粉丝,默认num个
- for i in range(num - 1):
- try:
- care_button = browser.find_element(By.CSS_SELECTOR,
- f"ul[class='list']>li:nth-child({i + 1})>div:nth-child(3)> :nth-child(1)")
- fan = browser.find_element(By.CSS_SELECTOR,
- f"ul[class = 'list']>li:nth-child({i + 1})> :nth-child(2)> :nth-child(1) :nth-child(1)")
- finally:
- pass
- print("tag" + care_button.text)
- if care_button.text == "回关":
- care_button.click()
- print("你回关了" + fan.text + " ----" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
- name = str(fan.text)
- # 进入关注者主页
- # fan.click()
- time.sleep(2)
- print(fan.get_attribute("href"))
- browser.get(fan.get_attribute("href"))
- time.sleep(2)
- give_like(name)
- else:
- print("你已经关注过" + fan.text + "了,无需再次关注")
-
- return
-
-
- def give_like(name):
- # 给他一个赞 title = browser.find_element(By.XPATH, '//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/div/div[
- # 1]/article/a')
- # title = browser.find_element(By.CSS_SELECTOR,
- # "div[class = 'mainContent']>div:nth-child(1)> :nth-child(1)> :nth-child(1) :nth-child(1) :nth-child(1)")
- print("kaisidianzan")
- try:
- title = browser.find_element(By.CSS_SELECTOR, "article > :nth-child(1)")
- except:
- print("没找到" + name + "的文章")
- else:
- time.sleep(1)
- print("href" + title.get_attribute("href"))
- browser.get(title.get_attribute("href"))
- time.sleep(1.5)
- try:
- islike = browser.find_element(By.ID, 'is-like')
- # // *[ @ id = "is-like"] / a
- time.sleep(1.5)
- except:
- print("没找到点赞按钮")
- else:
- islike.click()
- print("你点赞了" + name + "的文章")
- time.sleep(1)
- finally:
- pass
- finally:
- pass
- try:
- title = browser.find_element(By.TAG_NAME, "")
- time.sleep(1)
- print("tag2" + title.tag_name)
- except:
- print("meizhaodao")
- else:
- time.sleep(1)
- print("tag1" + title.tag_name)
-
- finally:
- # 回到关注列表
- browser.get(fans_link)
- time.sleep(3)
- return
-
-
- if __name__ == '__main__':
- fans_link = ""
- browser = webdriver.Chrome() # 括号中填写chromedriver驱动的路径
- browser.maximize_window()
- try:
- # 加载CSDN 登录地址
- browser.get("https://passport.csdn.net/login?code=applets")
- # 等待扫码登录
- ok = True
- while ok:
- try:
- isok = browser.find_element(By.XPATH, '//*[@id="csdn-toolbar"]/div/div/div[3]/div/div[1]/a')
- except:
- ok = False
- else:
- try:
- # print(isok.text)
- if isok.text == "登录/注册":
- ok = True
- else:
- ok = False
- except:
- ok = False
- time.sleep(0.5)
-
- time.sleep(2)
- # 登陆成功
- mess = browser.find_element(By.ID, "toolbar-remind")
- time.sleep(1)
- # 点击进入消息
- mess.click()
- # 进入新增粉丝页面
- new_fans = browser.find_element(By.XPATH, '// *[ @ id = "app"] / div / div[1] / ul / li[2] / a / span')
- fans_link = browser.find_element(By.XPATH, '// *[ @ id = "app"] / div / div[1] / ul / li[2] / a').get_attribute(
- "href")
-
- new_fans.click()
-
-
- time.sleep(1)
- # 查看前十个
- first = True
- care_new(8)
- while True:
- if first:
- care_new(8)
- # 20s查看一次
- browser.get(fans_link)
- time.sleep(20)
-
- finally:
- print("完了,报错了")
*进入新的界面后一定要尽量用get(url)的方式,这样只是在当前页面刷新,而不是新建标签页,click跳转界面后很容易出现定位不到UI元素的情况。
*预留足够的时间,进行页面加载。
链接:https://pan.baidu.com/s/17a07JnLZjSvsarED0lRn2A?pwd=z3x4
提取码:z3x4
*项目使用说明:
解压文件后记得添加chormdriver 路径到 系统环境变量path
Automessage\Autocsdn\dist下的exe文件可以直接运行,如果报错请检查环境变量以及chrom浏览器版本,这是我的版本。(在chrom浏览器地址栏输入,chrome://version/ 可以显示类似下图版本信息。
欢迎各位大佬留言私信,指点不足。后续部署到服务器端,欢迎来关注验证。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。