前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战项目二: 实现CSDN自动点赞

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

作者头像
K同学啊
发布2019-01-22 12:13:26
1.4K0
发布2019-01-22 12:13:26
举报

环境: Python3.6.5 编译器: Sublime Text 3 代码: GitHub 联系方式: ke.zb@qq.com 第三方库: selenium

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

一、思路

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

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

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

二、代码实现

(一)导入第三方库

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

代码语言:javascript
复制
pip install selenium
代码语言:javascript
复制
import time,json,random
from selenium import webdriver

(二)登录账号

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

【谷歌驱动器下载】

而后运行代码

代码语言:javascript
复制
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://passport.csdn.net/account/login")

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

CSDN登录界面

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

代码语言:javascript
复制
time.sleep(3)
#进入账号密码登录界面
driver.find_element_by_xpath("//a[@class='login-code__open js_login_trigger login-user__active']").click()
time.sleep(3)

看到如下界面

账号登录界面

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

代码语言:javascript
复制
#清空账号框中的内容
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()

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

(三)保存cookies到文件中

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

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

(四)读取并传入cookies

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

  • get_cookies()    获得cookie信息
  • add_cookie(cookie_dict) 添加cookie
  • delete_cookie(name) 删除特定(部分)的cookie
  • delete_all_cookies() 删除所有的cookie
代码语言:javascript
复制
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)

(五)实现自动点赞

代码语言:javascript
复制
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)

完。。。。

三、完整代码

代码语言:javascript
复制
#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)

四、后记

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、思路
  • 二、代码实现
    • (一)导入第三方库
      • (二)登录账号
        • (三)保存cookies到文件中
          • (四)读取并传入cookies
            • (五)实现自动点赞
            • 三、完整代码
            • 四、后记
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档