第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- ...
随机推荐
- 【T1543.003】利用 ACL 隐藏恶意 Windows 服务
看到一篇文章讲述了通过设置 DACL 隐藏 Windows 服务信息,便做一下总结. 技术原理 系统中每个 Service 在 Windows 中属于都一种对象(Object),用户在访问对象时的权限 ...
- eclipse关于新建工程找不到二进制文件的解决方法
eclipse新建工程后先构建项目 然后右键工程,选择属性,选择c/c++ Build,选择Tool chain editor.中间的Current Toolchain改为Mingw Gcc.然后选择 ...
- CentOS修改镜像源头
CentOS6改为阿里镜像源: 1. cd /etc/yum.repos.d 2. mv CentOS-Base.repo CenOS-Base.repo.bak 3. wget http://mir ...
- 简单STL
string: string s="5418340"; sort(s.begin(),s.end()); cout<<s; /**begin是头迭代器,end是尾迭代器 ...
- http 请求体数据处理2--ngx
HTTP 处理数据包, 有的业务不需要,此时只需要将数据包文读取后丢弃, 但是ngx 为什么还要提供一个丢弃接口呢???解决了什么问题?? ------对于HTTP模块而言,放弃接收包体就是简单地不处 ...
- uboot——do_bootm
do_bootm |----------根据参数得到 image的起始地址 |----------比较header的 magic_num 是否为 zImage | |是 | | zImage路线 | ...
- 记一次ceph的故障修复(20160408)
ceph的在正常运行的时候基本不会出现故障,出现故障一般在变动的时候,具体有下面几种可能出现的情形 软件升级 增加存储节点 减少存储节点 调整副本数目 调整pg数目 磁盘出现损坏 节点网络出现异常 以 ...
- Python_自动化测试_项目
<论坛自动化测试项目> 1.自行选择合适的社区 2.功能要求 5个以上,不包含登录页 3.多手动测试 多用selenium IDE 4.生成测试报告,发送邮件 5.计划任务定时完成 6 ...
- PHP+Ajax点击加载更多内容
css样式: <style type="text/css"> #more{margin:10px auto;width: 560px; border: 1px soli ...
- less和more的区别
more: 顾名思义显示更多less: 由于more不能后退,就取more的反义词less加上后退功能所以Linux里流传着这样一句话:"less is more". 总结下mor ...