第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞
写在前面:本文仅供参考学习,请勿用作它途,禁止转载!
在开始学爬虫时,学习了csdn博客专家(id:明天依旧可好 | 柯尊柏)《实战项目二:实现CSDN自动点赞》的文章,文章介绍了通过Python和selenium模块实现csdn指定文章点赞的过程,老猿学习后,照葫芦画瓢自己实践了一番,发现文章介绍内容完全可行,如下5个点如果能进一步完善会更好:
文章中给定的《【谷歌驱动器下载】》在老猿所在的各种网络环境都无法打开,后来老猿通过网上找到博文《chromedriver.exe下载(作者:csdn菜鸟的成长记)》介绍的下载地址成功下载;
某些文章点赞不成功,老猿发现是因为定位点赞按钮的html元素的css类的值除了原文《实战项目二:实现CSDN自动点赞》给出的’ low-height hover-box btn-like ‘,还有少数情况会使用’ long-height hover-box btn-like ',其实通过点赞按钮的title属性值去判断更好;
《实战项目二:实现CSDN自动点赞》原文是通过给出登录用户名和密码登录,而第三方登录这种方式存在问题,为了解决这个问题,老猿在实现时没有采用这种方式,而是直接手工登录,登录完成之后再进行点赞;
《实战项目二:实现CSDN自动点赞》原文是固定url点赞,老猿是采用将要点赞的url地址写入一个c:\temp\urllist.txt来点赞,这样可以随时变更点赞的url,并支持批量点赞;
另外请注意:
1、这种基于selenium自动测试软件测试的模式,服务端是会检测到,会对登录的账号进行额外的校验如短信校验,因此使用并不方便,但这种模式本来就是这样的,无法回避,只有采取其他方法才能回避;
2、下载的谷歌驱动与浏览器版本之间有配套关系,必须确保对应才能正常运行,二者的对应关系请参见《chromedriver.exe下载(作者:csdn菜鸟的成长记)》。
关于这种方式的实现过程老猿不再详细介绍,大家参考csdn博客专家(id:明天依旧可好 | 柯尊柏)《实战项目二:实现CSDN自动点赞》的原文即可。在此老猿提供自己调整后的完整代码,大家自己对照原文及老猿前面介绍的第2、3、4、5点的调整去理解和实践即可。
老猿实现的通过Python+selenium的csdn博文点赞程序完整代码如下:
#coding:utf-8
#使用selenium的webdriver实现csdn博文点赞
import time
import fileinput
from selenium import webdriver
def openfilesurl(filename):
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://blog.csdn.net/LaoYuanPython")
lineno=0
success=0
fail = 0
input("等待浏览器初始化并手工登陆完成,确认登陆后按任意键继续!")
for line in fileinput.input(filename):
lineno += 1
urlline = line.strip(' \r\n')
if len(urlline)<10:
lineinfo=f"{lineno} {urlline}:长度不够,忽略\n"
continue
driver.get(urlline)
time.sleep(1)
try:driver.find_element_by_xpath("//button[@class=' long-height hover-box btn-like ']").click()
except Exception as e:
try:driver.find_element_by_xpath("//button[@class=' low-height hover-box btn-like ']").click()
except Exception as e:
fail+=1
lineinfo=f"{lineno} {urlline}:点赞失败,总计点赞失败{fail}个,点赞成功{success}个\n"#失败原因:\n{e}"
print(lineinfo)
else:
success+=1
lineinfo=f"{lineno} {urlline}:点赞成功,总计点赞成功{success}个,点赞代码low-height hover-box btn-like\n"
print(lineinfo)
else:
success+=1
lineinfo=f"{lineno} {urlline}:点赞成功,总计点赞成功{success}个,点赞代码long-height hover-box btn-like\n"
print(lineinfo)
info = f"任务结束,总计成功点赞{success}个、点赞失败{fail}个"
print(info)
driver.close()
def main():
filename=input("请输入保存的要访问网址列表的文件,没有输入则默认为'c:\\temp\\urllist.txt':\n").strip(' \r\n')
if len(filename)==0:filename=r'c:\temp\urllist.txt'
openfilesurl(filename)
main()
本节参考《实战项目二:实现CSDN自动点赞》的基础上介绍了使用Python+selenium的csdn博文点赞实现,并提供了完整的点赞代码,再次感谢csdn博客专家“明天依旧可好 | 柯尊柏”的无私分享。可以看到这种方式还是存在先天不足,不是一个真正的爬虫程序,在下一篇文章《第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞》中老猿将介绍一种完全模拟浏览器让服务器无法识别的点赞实现方式。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
请大家多多支持,点赞、评论和加关注!谢谢!
第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞的更多相关文章
- 第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞
写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在<第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析>老猿分析了csdn博文点赞处理的http请求和响应报 ...
- 第14.18节 爬虫实战4: request+BeautifulSoup+os实现利用公众服务Wi-Fi作为公网IP动态地址池
写在前面:本文相关方法为作者独创,仅供参考学习爬虫技术使用,请勿用作它途,禁止转载! 一. 引言 在爬虫爬取网页时,有时候希望不同的时候能以不同公网地址去爬取相关的内容,去网上购买地址资源池是大部分人 ...
- 第14.17节 爬虫实战3: request+BeautifulSoup实现自动获取本机上网公网地址
一. 引言 一般情况下,没有特殊要求的客户,宽带服务提供商提供的上网服务,给客户家庭宽带分配的地址都是一个宽带服务提供商的内部服务地址,真正对外访问时通过NAT进行映射到一个公网地址,如果我们想确认自 ...
- 第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析
如果要对csdn博文点赞,首先要登录CSDN,然后打开一篇需要点赞的文章,如<第14.1节 通过Python爬取网页的学习步骤>按<第14.3节 使用google浏览器获取网站访问的 ...
- 爬虫实战(三) 用Python爬取拉勾网
目录 0.前言 1.初始化 2.爬取数据 3.保存数据 4.数据可视化 5.大功告成 0.前言 最近,博主面临着选方向的困难(唉,选择困难症患者 >﹏<),所以希望了解一下目前不同岗位的就 ...
- 爬虫实战(二) 用Python爬取网易云歌单
最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...
- 爬虫实战(一) 用Python爬取百度百科
最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...
- 爬虫实战【10】利用Selenium自动登陆京东签到领金币
今天我们来讲一下如何通过python来实现自动登陆京东,以及签到领取金币. 如何自动登陆京东? 我们先来看一下京东的登陆页面,如下图所示: [插入图片,登陆页面] 登陆框就是右面这一个框框了,但是目前 ...
- 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解
第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解 封装模块 #!/usr/bin/env python # -*- coding: utf- ...
随机推荐
- C++变量的存储类型
C++变量和函数包括两个属性:数据类型和数据的存储类型.存储类型是指数据在内存中存储的方式.变量的存储类型分为四种:自动类型(auto),寄存器类型(register).静态类型(static)外部类 ...
- 理解js参数
<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title> ...
- 鸿蒙开发板外设控制 之 实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)
在帖子 <鸿蒙开发板外设控制>直播图文版(2020.10.28) 中我们提到过:"开发板上的按键也可以看作一种 GPIO 外设." 因此,要捕捉按键的状态(按下或释放) ...
- HTML生成横向的PDF
HTML生成PDF请参照:https://www.cnblogs.com/yunfeiyang-88/p/10984740.html 如要生成横向的PDF:在html模板的style标签里面加入@pa ...
- linux 命令之file
Linux file命令用于辨识文件类型. 通过file指令,我们得以辨识该文件的类型. 语法 file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...] ...
- K尾相等数(模运算)
Description 从键盘输入一个自然数K(K>1),若存在自然数M和N(M>N),使得K^M^和K^N^均大于或等于1000,且他们的末尾三位数相等,则称M和N是一对"K尾 ...
- Pinpoint 编译环境搭建(Pinpoint系列一)
本文基于 Pinpoint 2.1.0 版本 目录 一.2.1.0 版本特性 二.编译环境准备 三.编译注意事项 四.编译目录 五.注意事项 新版本的内容参考官方文档, Pinpoint的整个搭建是历 ...
- Linux bash反弹shell原理引起的一点思考
最近,一起做安全测试的兄弟问我:Linux反弹shell的命令是什么,我毫不犹豫地在笔记中找到发给了他,可是脑海中突然闪过有个疑问,为啥这样能反弹shell呢,用了那么多次却从来没有想过这个问 ...
- ubuntu16.04搭建LAMP(独立安装)
修改APT源 备份原文件source.list sudo cp /etc/source.list /etc/source.list.bak 修改source.list sudo vi /etc/sou ...
- bugku-PHP_encrypt_1(ISCCCTF)
前言 懒得写详细wp了.... 我佛了 这个题纠结好久......... 前言 需要解密的密文: fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA ...