目前的进度
2019年1月2日:
目前建议运行AlipayCore_v2的代码(如果没有装pywin32的依赖的话尽量不要使用AlipayCore)
好久一段时间没有更新了(账单通过selenium的方式基本上都会被支付宝识破了)
- 爬取账单的接口的核心就是cookie的有效性,打算之后从cookie的有效性上开始入手
- 目前代码基本定型,后续需要交流的可以加我的微信或者QQ或者提issue也可以(目前暂时因为工作原因没有太多精力去研究了)
可能通过验证码登录的方式会比较有效(但是偶尔也会被封~)
新增的一些东西:
- spiders下新增了一个v2的方式就是通过Scrapy结合urllib的形式进行爬取(偶尔可行,主要还是需要面对支付宝的点击流模型)
- utils下就新增bill_page_option(一下账单的参数), bill_parser简单的urllib的爬虫
问题反馈
在使用中有任何问题,可以反馈给我,以下联系方式跟我交流:
Author: Leo
Wechat: Leo-sunhailin
E-mail: 379978424@qq.com
Github URL: 项目链接
开发环境
系统版本:Win10 x64
Python版本:3.4.4
Python库版本列表:
Pillow: 5.0.0
Scrapy:1.4.0
selenium:3.8.1
requests:2.18.4
pymongo:3.6.0
python_dateutil:2.6.1
Ps: 一定要配好Python的环境,不然Scrapy的命令可能会跑不起来
安装和运行方式
安装库
1 | # 项目根目录下,打开命令行 |
1 | # 项目根目录下,启动爬虫 |
—
功能
- 模拟登录支付宝(账号密码和二位都可以登陆)
- 获取自定义账单记录和花呗剩余额度(2017年10月份的时候个人页面还有花呗总额度的,后面改版没有了.再之后又出现了,应该是支付宝内部在做调整)
- 数据存储在MongoDB中(暂时存储在MongoDB,后续支持sqlite,json或其他格式的数据)
- 日志记录系统,启动爬虫后会在项目根目录下创建一个Alipay.log的文件(同时写入文件和输出在控制台)
技术点
吐槽一下: 这点可能没啥好说,因为代码是从自己之前写的用非框架的代码搬过来的,搬过来之后主要就是适应Scrapy这个框架,理解框架的意图和执行顺序以及项目的结构,然后进行兼容和测试。
我这个项目主要就用到Spider模块(即爬虫模块),Pipeline和item(即写数据的管道和实体类)
Downloader的那块基本没做处理,因为核心还是在用selenium + webdriver,解析页面用的是Scrapy封装好的Selector.
Scrapy具体的流程看下图: (从官方文档搬过来的)
题外话
题外话模块:
上一段讲到了一个Selector,这个是东西是Scrapy基于lxml开发的,但是真正用的时候其实和lxml的selector有点区别.
举个例子吧:1
2
3
4
5
6# 两段相同的标签获取下面的文字的方式
# lxml
name = str(tr.xpath('td[@class="name"]/p/a/text()').strip()
# Scrapy
name = tr.xpath('string(td[@class="name"]/p/a)').extract()[0].strip()
两行代码对同一个标签的文字提取的方法有些不一样,虽然到最后的结果一样。
lxml中有一个”string(.)”方法也是为了提取文字,但是这个方法是要在先指定了父节点或最小子节点后再使用,就可以获取父节点以下的所有文字或最小子节点对应的文字信息.
而Scrapy的Selector则可以在”string(.)”里面写入标签,方便定位,也很清晰的看出是要去获取文字信息.
具体区别其实可以对比下我非框架下的和Scrapy框架下的代码,里面用xpath定位的方式有点不一样.
未来的进度
- 数据源保存的可选择性(从多源选择单源写入到多源写入)
- 修改配置文件的自由度(增加修改settings.py的参数)
- 尽可能优化爬虫的爬取速度
- 研究Scrapy的自定义命令的写法,提高扩展性