热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3.6支付宝账单爬虫

Python3.6支付宝账单爬虫(阉割版需完整代码请联系我)2019年6月13日版本:当前版本仍然可用,但由于个人原因不再提供更新。支付宝打赏二维码(备注你的邮箱,每晚12点自动发
Python3.6支付宝账单爬虫(阉割版 需完整代码请联系我)2019年6月13日版本:

当前版本仍然可用,但由于个人原因不再提供更新

支付宝打赏二维码(备注你的邮箱,每晚12点自动发送源码)

《Python3.6支付宝账单爬虫》

 

2019年3月15日版本:发现网上有人抄袭我的博客,请大家爱护好自己财产! 

源码由Python实现,可在Linux or Windows上稳定,支持个人账户和企业账户,支持Python2+ or 3+,可稳定运行

[申明]:本人还是学生,只支持双休日维护,见谅!

运行视频:

https://weibo.com/tv/v/Hl3Q9B0nt?fid=1034:4350196369281581

这视频是IDLE下打印的,现在已经接上Mysql数据库

 《Python3.6支付宝账单爬虫》

24小时无限登陆测试:

《Python3.6支付宝账单爬虫》

搜索到本文的你,一定明白,支付宝最麻烦的是登录验证,所以我唯一解决的就是登录问题。源码功能可以实现多账户自动登录不需要验证码、二维码,中途也不会出现。可以无监督运行

由于许多人不会Python,所以我接上了数据库,这样,你们只需在服务器上运行此脚本,然后通过轮询数据库来实现你们想要的功能

2019.03.15 20:23 Vision_Tung 留

——–以下为原文,先阶段的代码和逻辑已经和下文相差甚远———

本人认为支付宝爬虫其实是没有任何意义的,因为只能爬取自己的信息。如果爬别人的信息,首先,马云爸爸不同意,其次,这个方向就已经不是网络爬虫,而是网络黑客,我也不会。

 

以下内容如果是用于学习,仅供参考,如若是闲着无聊,您老人家就在此结束吧!

重点:此方法没有使用烦人的COOKIEs,硬刚爬虫!

分析:

 

  1. 先进入支付宝网页了解下情况(传送门:登陆-支付宝)
  2. 有两种方式登陆 扫码 or 账号,选择后者(因为自动登陆)
  3. 如果你有幸成功进入主页,那么算你运气好
  4. 如果你需要再次扫码,那么这就是需要我们解决的第一个问题
    《Python3.6支付宝账单爬虫》
     
  5. 进入页面后是这样的
    《Python3.6支付宝账单爬虫》
  6. 主页只有七条数据,而我们要的是全部
  7. 进入账单页面
    《Python3.6支付宝账单爬虫》
  8. OK 了解,具体步骤见下
     
具体流程如下:

《Python3.6支付宝账单爬虫》

核心代码:

 

  • 自动登陆(老生常谈,不多赘述)

ali_num = '******'# 账号密码
ali_pad= '*****' #密码
driver.find_element_by_xpath('//*[@id="J-input-user"]').clear()
time.sleep(3)
for i in ali_num:
driver.find_element_by_xpath('//*[@id="J-input-user"]').send_keys(i)
time.sleep(0.5)
driver.find_element_by_xpath('//*[@id="password_rsainput"]').clear()
driver.find_element_by_xpath('//*[@id="password_rsainput"]').click()
for i in ali_pad:
driver.find_element_by_xpath('//*[@id="password_rsainput"]').send_keys(i)
time.sleep(0.5)
driver.find_element_by_xpath('//*[@id="password_rsainput"]').text
driver.find_element_by_xpath('//*[@id="J-login-btn"]').click()

  • 循环进入账单页面

driver.get('https://consumeprod.alipay.com/record/standard.htm')
time.sleep(2)
keep_safe(driver)
cnt = 0
for i in range(100):
'''
注意!!!!!!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
--Vision_Tung
2018年10月25日

'''

  • 二维码检测

def keep_safe(driver):  
  try:  
    F = 1  
    while(F):  
      if F_Login==1:  
       
'''
注意!!!!!!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
--Vision_Tung
2018年10月25日

'''
  except:  
    pass 

 

  • 获取数据

def getInfor(driver):
global N
for num in range(10):
num = num+1
al_day_xpath = '//*[@id="J-item-'+str(num)+'"]/td[2]/p[1]' #//*[@id="J-item-1"]/td[2]/p[1] 日期
al_time_xpath = '//*[@id="J-item-'+str(num)+'"]/td[2]/p[2]' #//*[@id="J-item-1"]/td[2]/p[2] 时刻
al_way_xpath = '//*[@id="J-item-'+str(num)+'"]/td[3]/p[1]' #//*[@id="J-item-1"]/td[3]/p[1] 方式
al_payee_xpath = '//*[@id="J-item-'+str(num)+'"]/td[3]/p[2]' #//*[@id="J-item-1"]/td[3]/p[2]/span 收款人
al_snum_xpath = '//*[@id="J-tradeNo-'+str(num)+'"]' #//*[@id="J-tradeNo-1"] 号#.get_attribute("title")
al_figure_xpath = '//*[@id="J-item-'+str(num)+'"]/td[4]/span' #//*[@id="J-item-1"]/td[4]/span 金额
al_status_xpath = '//*[@id="J-item-'+str(num)+'"]/td[6]/p[1]' #//*[@id="J-item-1"]/td[6]/p[1] 交易状态
al_day = driver.find_element_by_xpath(al_day_xpath).text
al_time = driver.find_element_by_xpath(al_time_xpath).text
al_way = driver.find_element_by_xpath(al_way_xpath).text
al_payee = driver.find_element_by_xpath(al_payee_xpath).text
al_snum = driver.find_element_by_xpath(al_snum_xpath).get_attribute("title")
al_figure = driver.find_element_by_xpath(al_figure_xpath).text
al_status = driver.find_element_by_xpath(al_status_xpath).text
print(str(N)+'.'+'日期'+':'+al_day+'\t时间'+':'+al_time+'\t方式'+':'+al_way+'\t收款人'+':'+al_payee+'\t流水号'+':'+al_snum+'\t金额'+':'+al_figure+'\t交易状态'+':'+al_status)
N = N +1

唯一需要注意的是流水号并不在text里,而是在title属性中

效果:

《Python3.6支付宝账单爬虫》

《Python3.6支付宝账单爬虫》

全部代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
N = 1
F_Login = 0
def keep_safe(driver):  
   
       
'''
注意!!!!!!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
--Vision_Tung
2018年10月25日

'''
def getInfor(driver):
global N
for num in range(10):
num = num+1
al_day_xpath = '//*[@id="J-item-'+str(num)+'"]/td[2]/p[1]' #//*[@id="J-item-1"]/td[2]/p[1] 日期
al_time_xpath = '//*[@id="J-item-'+str(num)+'"]/td[2]/p[2]' #//*[@id="J-item-1"]/td[2]/p[2] 时刻
al_way_xpath = '//*[@id="J-item-'+str(num)+'"]/td[3]/p[1]' #//*[@id="J-item-1"]/td[3]/p[1] 方式
al_payee_xpath = '//*[@id="J-item-'+str(num)+'"]/td[3]/p[2]' #//*[@id="J-item-1"]/td[3]/p[2]/span 收款人
al_snum_xpath = '//*[@id="J-tradeNo-'+str(num)+'"]' #//*[@id="J-tradeNo-1"] 号#.get_attribute("title")
al_figure_xpath = '//*[@id="J-item-'+str(num)+'"]/td[4]/span' #//*[@id="J-item-1"]/td[4]/span 金额
al_status_xpath = '//*[@id="J-item-'+str(num)+'"]/td[6]/p[1]' #//*[@id="J-item-1"]/td[6]/p[1] 交易状态
al_day = driver.find_element_by_xpath(al_day_xpath).text
al_time = driver.find_element_by_xpath(al_time_xpath).text
al_way = driver.find_element_by_xpath(al_way_xpath).text
al_payee = driver.find_element_by_xpath(al_payee_xpath).text
al_snum = driver.find_element_by_xpath(al_snum_xpath).get_attribute("title")
al_figure = driver.find_element_by_xpath(al_figure_xpath).text
al_status = driver.find_element_by_xpath(al_status_xpath).text
print(str(N)+'.'+'日期'+':'+al_day+'\t时间'+':'+al_time+'\t方式'+':'+al_way+'\t收款人'+':'+al_payee+'\t流水号'+':'+al_snum+'\t金额'+':'+al_figure+'\t交易状态'+':'+al_status)
N = N +1
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://auth.alipay.com/login/index.htm?goto=https%3A%2F%2Fmy.alipay.com%2Fportal%2Fi.htm%3Freferer%3Dhttps%253A%252F%252Fauthet15.alipay.com%252Flogin%252FhomeB.htm")
driver.find_element_by_xpath('//*[@id="J-loginMethod-tabs"]/li[2]').click()
  
       
'''
注意!!!!!!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
--Vision_Tung
2018年10月25日

'''
for i in range(8):
  
       
'''
注意!!!!!!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
此块细节已影藏!!!!
--Vision_Tung
2018年10月25日

'''

推荐阅读
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 电脑公司win7剪切板位置及使用方法
    本文介绍了电脑公司win7剪切板的位置和使用方法。剪切板一般位于c:\windows\system32目录,程序名为clipbrd.exe。通过在搜索栏中输入cmd打开命令提示符窗口,并输入clip /?即可调用剪贴板查看器。赶紧来试试看吧!更多精彩文章请关注本站。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了一道网络流题目hdu4888 Redraw Beautiful Drawings的解题思路。题目要求以行和列作为结点建图,并通过最大流算法判断是否有解以及是否唯一。文章详细介绍了建图和算法的过程,并强调在dfs过程中要进行回溯。 ... [详细]
author-avatar
总会有办法的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有