第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞

写在前面:本文仅供参考学习,请勿用作它途,禁止转载!

在开始学爬虫时,学习了csdn博客专家(id:明天依旧可好 | 柯尊柏)《实战项目二:实现CSDN自动点赞》的文章,文章介绍了通过Python和selenium模块实现csdn指定文章点赞的过程,老猿学习后,照葫芦画瓢自己实践了一番,发现文章介绍内容完全可行,如下5个点如果能进一步完善会更好:

  1. 文章中给定的《【谷歌驱动器下载】》在老猿所在的各种网络环境都无法打开,后来老猿通过网上找到博文《chromedriver.exe下载(作者:csdn菜鸟的成长记)》介绍的下载地址成功下载;

  2. 某些文章点赞不成功,老猿发现是因为定位点赞按钮的html元素的css类的值除了原文《实战项目二:实现CSDN自动点赞》给出的’ low-height hover-box btn-like ‘,还有少数情况会使用’ long-height hover-box btn-like ',其实通过点赞按钮的title属性值去判断更好;

  3. 《实战项目二:实现CSDN自动点赞》原文是通过给出登录用户名和密码登录,而第三方登录这种方式存在问题,为了解决这个问题,老猿在实现时没有采用这种方式,而是直接手工登录,登录完成之后再进行点赞;

  4. 《实战项目二:实现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
请大家多多支持,点赞、评论和加关注!谢谢!

posted on 2019-09-15 10:08  老猿Python  阅读(167)  评论(0编辑  收藏  举报