首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

实战项目二:实现CSDN自动点赞

  • 23-09-22 20:02
  • 3462
  • 11595
blog.csdn.net

环境: Python3.6.5
编译器: Sublime Text 3
代码: GitHub
联系方式: [email protected]
第三方库: selenium

写在前面:本文仅供参考学习,请勿用作它途。


文章目录

  • 一、思路
  • 二、代码实现
    • (一)导入第三方库
    • (二)登录账号
    • (三)保存cookies到文件中
    • (四)读取并传入cookies
    • (五)实现自动点赞
  • 三、完整代码
  • 四、后记

一、思路

在CSDN中,如果实现自动点赞,就必须登录,这就避免不了和selenium打交道。Selenium是一个WEB自动化测试工具,在Python中常用于模拟登陆的实现

实现CSDN自动点赞分以下几个步骤:

  1. 登录账号
  2. 获取并储存cookies
  3. 读取并传入cookies
  4. 实现自动点赞

二、代码实现

(一)导入第三方库

对于selenium还没安装的童鞋可以用在命令行中安装

pip install selenium
  • 1
import time,json,random
from selenium import webdriver
  • 1
  • 2

(二)登录账号

在selenium安装完成后,需要下一个驱动器(即chromedriver.exe)

【谷歌驱动器下载】

而后运行代码

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://passport.csdn.net/account/login")
  • 1
  • 2

可以看到弹出CSDN的登录界面

CSDN登录界面

我们这里采用的是账号密码登录方式,我们再来做一个切换,点击“账号登录”

time.sleep(3)
#进入账号密码登录界面
driver.find_element_by_xpath("//a[@class='login-code__open js_login_trigger login-user__active']").click()
time.sleep(3)
  • 1
  • 2
  • 3
  • 4

看到如下界面

账号登录界面

最后我们清空账号密码框,将自己的CSDN账号密码输入进去即可

#清空账号框中的内容
driver.find_element_by_xpath("//input[@name='username']").clear()
print("账号框清空完成")
#自动填入登录用户名
driver.find_element_by_xpath("//form[@id='fm1']/input[@name='username']").send_keys(account_CSDN)
print("账号输入完成")
#清空密码框中的内容
driver.find_element_by_xpath("//input[@name='password']").clear()
#自动填入登录密码
driver.find_element_by_xpath("//input[@name='password']").send_keys(password_CSDN)
time.sleep(3)
#点击登录
driver.find_element_by_xpath("//input[@class='logging']").click()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

大家可能也注意到了我代码上用了很多time.sleep()进行休眠,这个是为了给服务器一个反应时间。拿输入账号密码后的登录操作来举例,如果你在输入账号密码后立即登录,系统会报出账号密码错误的提起,这个是由于我们代码输入账号密码的速度太快了,服务器还没接收到你输入的信息,代码就已经登录操作了,它自然会给你报错。当然人工输入是不会遇到这个问题的,你速度没那么快嘛。

(三)保存cookies到文件中

在介绍下面的内容前,我先来介绍几个知识点

  • json.loads()是将str转化成dict格式
  • json.dumps()是将dict转化成str格式。
  • json.dump(dict,fp)把dict转换成str类型存到fp指向的文件里。
  • json.load(fp)把fp指向的文件里的内容读取出来。
#获取并保存cookies
cookies = driver.get_cookies()
with open("cookies.txt", "w") as fp:
	json.dump(cookies, fp)
  • 1
  • 2
  • 3
  • 4

(四)读取并传入cookies

这里我么将事先存入cookies.txt文件中的cookies提取出来加载进去即可。这里我补充一些webdriver中提供了操作cookie的相关方法:

  • get_cookies()    获得cookie信息
  • add_cookie(cookie_dict) 添加cookie
  • delete_cookie(name) 删除特定(部分)的cookie
  • delete_all_cookies() 删除所有的cookie
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://blog.csdn.net/qq_38251616/article/details/82963395")
with open("cookies.txt", "r") as fp:
	cookies = json.load(fp)
	for cookie in cookies:
		driver.add_cookie(cookie)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(五)实现自动点赞

driver.get("https://blog.csdn.net/qq_38251616/article/details/82963395")
time.sleep(3)
driver.find_element_by_xpath("//button[@class=' low-height hover-box btn-like ']").click()
print("点赞完成!")
time.sleep(3)
  • 1
  • 2
  • 3
  • 4
  • 5

完。。。。

三、完整代码

#CSDN自动点赞

import time,json,random
from selenium import webdriver

#CSDN账号
account_CSDN = "你的账号"
#CSDN密码
password_CSDN = "你的密码"

def CSDN_login():
	'''
	登录CSDN并保存cookies
	'''
	driver = webdriver.Chrome(executable_path='chromedriver.exe')
	driver.get("https://passport.csdn.net/account/login")
	time.sleep(3)
	#进入账号密码登录界面
	driver.find_element_by_xpath("//a[@class='login-code__open js_login_trigger login-user__active']").click()
	time.sleep(3)
	#清空账号框中的内容
	driver.find_element_by_xpath("//input[@name='username']").clear()
	print("账号框清空完成")
	#自动填入登录用户名
	driver.find_element_by_xpath("//form[@id='fm1']/input[@name='username']").send_keys(account_CSDN)
	print("账号输入完成")
	#清空密码框中的内容
	driver.find_element_by_xpath("//input[@name='password']").clear()
	#自动填入登录密码
	driver.find_element_by_xpath("//input[@name='password']").send_keys(password_CSDN)
	time.sleep(3)
	#点击登录
	driver.find_element_by_xpath("//input[@class='logging']").click()

	#获取并保存cookies
	cookies = driver.get_cookies()
	with open("cookies.txt", "w") as fp:
		json.dump(cookies, fp)


def dianZan(url_list):
	'''
	实现自动点赞功能
	'''
	driver = webdriver.Chrome(executable_path='chromedriver.exe')
	driver.get("https://blog.csdn.net/qq_38251616/article/details/82963395")
	with open("cookies.txt", "r") as fp:
		cookies = json.load(fp)
		for cookie in cookies:
			driver.add_cookie(cookie)

	print("cookies加载完成,成功登录")
	time.sleep(3)
	driver.get("https://blog.csdn.net/qq_38251616/article/details/82963395")
	time.sleep(3)
	driver.find_element_by_xpath("//button[@class=' low-height hover-box btn-like ']").click()
	print("点赞完成!")
	time.sleep(3)

if __name__ == '__main__':
	url_list = ""
	CSDN_login()
	dianZan(url_list)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

四、后记

如果觉得我写得可以点个赞呗;如果有什么不足的地方,还你希望可以在下方留言告诉我。

我的专栏:【机器学习100天】、【K童鞋的爬虫笔记】

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树网络爬虫Selenium333612 人正在系统学习中
K同学啊/深度学习定制接单
微信名片
注:本文转载自blog.csdn.net的K同学啊的文章"https://blog.csdn.net/qq_38251616/article/details/83717669"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top