All Projects → sunhailin-Leo → Alipayspider Scrapy

sunhailin-Leo / Alipayspider Scrapy

AlipaySpider on Scrapy(use chrome driver); 支付宝爬虫(基于Scrapy)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Alipayspider Scrapy

Python3 Spider
Python爬虫实战 - 模拟登陆各大网站 包含但不限于:滑块验证、拼多多、美团、百度、bilibili、大众点评、淘宝,如果喜欢请start ❤️
Stars: ✭ 2,129 (+2941.43%)
Mutual labels:  spider, scrapy, selenium
Python Spider
豆瓣电影top250、斗鱼爬取json数据以及爬取美女图片、淘宝、有缘、CrawlSpider爬取红娘网相亲人的部分基本信息以及红娘网分布式爬取和存储redis、爬虫小demo、Selenium、爬取多点、django开发接口、爬取有缘网信息、模拟知乎登录、模拟github登录、模拟图虫网登录、爬取多点商城整站数据、爬取微信公众号历史文章、爬取微信群或者微信好友分享的文章、itchat监听指定微信公众号分享的文章
Stars: ✭ 615 (+778.57%)
Mutual labels:  spider, scrapy, selenium
Pythonspidernotes
Python入门网络爬虫之精华版
Stars: ✭ 5,634 (+7948.57%)
Mutual labels:  scrapy, selenium
Infospider
INFO-SPIDER 是一个集众多数据源于一身的爬虫工具箱🧰,旨在安全快捷的帮助用户拿回自己的数据,工具代码开源,流程透明。支持数据源包括GitHub、QQ邮箱、网易邮箱、阿里邮箱、新浪邮箱、Hotmail邮箱、Outlook邮箱、京东、淘宝、支付宝、中国移动、中国联通、中国电信、知乎、哔哩哔哩、网易云音乐、QQ好友、QQ群、生成朋友圈相册、浏览器浏览历史、12306、博客园、CSDN博客、开源中国博客、简书。
Stars: ✭ 5,984 (+8448.57%)
Mutual labels:  spider, selenium
Funpyspidersearchengine
Word2vec 千人千面 个性化搜索 + Scrapy2.3.0(爬取数据) + ElasticSearch7.9.1(存储数据并提供对外Restful API) + Django3.1.1 搜索
Stars: ✭ 782 (+1017.14%)
Mutual labels:  spider, scrapy
Fbcrawl
A Facebook crawler
Stars: ✭ 536 (+665.71%)
Mutual labels:  spider, scrapy
Scrapy Selenium
Scrapy middleware to handle javascript pages using selenium
Stars: ✭ 550 (+685.71%)
Mutual labels:  scrapy, selenium
Icrawler
A multi-thread crawler framework with many builtin image crawlers provided.
Stars: ✭ 629 (+798.57%)
Mutual labels:  spider, scrapy
Elves
🎊 Design and implement of lightweight crawler framework.
Stars: ✭ 315 (+350%)
Mutual labels:  spider, scrapy
Jspider
JSpider会每周更新至少一个网站的JS解密方式,欢迎 Star,交流微信:13298307816
Stars: ✭ 914 (+1205.71%)
Mutual labels:  spider, scrapy
Mailinglistscraper
A python web scraper for public email lists.
Stars: ✭ 19 (-72.86%)
Mutual labels:  spider, scrapy
App comments spider
爬取百度贴吧、TapTap、appstore、微博官方博主上的游戏评论(基于redis_scrapy),过滤器采用了bloomfilter。
Stars: ✭ 38 (-45.71%)
Mutual labels:  spider, scrapy
Haipproxy
💖 High available distributed ip proxy pool, powerd by Scrapy and Redis
Stars: ✭ 4,993 (+7032.86%)
Mutual labels:  spider, scrapy
E Commerce Crawlers
🚀电商网站爬虫合集,淘宝京东亚马逊等
Stars: ✭ 377 (+438.57%)
Mutual labels:  scrapy, selenium
Netdiscovery
NetDiscovery 是一款基于 Vert.x、RxJava 2 等框架实现的通用爬虫框架/中间件。
Stars: ✭ 573 (+718.57%)
Mutual labels:  spider, selenium
Post Tuto Deployment
Build and deploy a machine learning app from scratch 🚀
Stars: ✭ 368 (+425.71%)
Mutual labels:  scrapy, selenium
Django Dynamic Scraper
Creating Scrapy scrapers via the Django admin interface
Stars: ✭ 1,024 (+1362.86%)
Mutual labels:  spider, scrapy
Happy Spiders
🔧 🔩 🔨 收集整理了爬虫相关的工具、模拟登陆技术、代理IP、scrapy模板代码等内容。
Stars: ✭ 261 (+272.86%)
Mutual labels:  spider, scrapy
Alltheplaces
A set of spiders and scrapers to extract location information from places that post their location on the internet.
Stars: ✭ 277 (+295.71%)
Mutual labels:  spider, scrapy
Seeker
Seeker - another job board aggregator.
Stars: ✭ 16 (-77.14%)
Mutual labels:  spider, scrapy

支付宝爬虫(Scrapy版本)


问题反馈

在使用中有任何问题,可以反馈给我,以下联系方式跟我交流

目前的进度

  • 2019年1月2日:

    • 目前建议运行AlipayCore_v2的代码(如果没有装pywin32的依赖的话尽量不要使用AlipayCore)

    • 好久一段时间没有更新了(账单通过selenium的方式基本上都会被支付宝识破了)

    • 爬取账单的接口的核心就是cookie的有效性,打算之后从cookie的有效性上开始入手

    • 目前代码基本定型,后续需要交流的可以加我的微信或者QQ或者提issue也可以(目前暂时因为工作原因没有太多精力去研究了)

    • 可能通过验证码登录的方式会比较有效(但是偶尔也会被封~)

    • 新增的一些东西:

    • spiders下新增了一个v2的方式就是通过Scrapy结合urllib的形式进行爬取(偶尔可行,主要还是需要面对支付宝的点击流模型)

    • utils下就新增bill_page_option(一下账单的参数), bill_parser简单的urllib的爬虫

  • 2018年11月30日:

    • 今天先整理下代码, 好长一段时间没有认真看这段代码了,这几天会梳理一下也有可能会更新一下代码
  • 2018年9月16日:

    • 更新了一下用户主页的数据获取(账户 余额、余额宝详情、花呗详情)
    • 账单详情依旧无法完整获取(账单下载也有点击流识别)
      • 尝试使用了pywin32和pymouse系列的方式去点击(暂时没有什么进展), 打算用C写个dll真实模拟鼠标移动(待更新)
    • conf文件夹中放了一个pywin32-221 python3.4的安装包(windows的, 感兴趣的小伙伴可以尝试一下)
  • 2018年8月8日:

    • 支付宝又双叒叕改了个人主页的样式和数据获取方式
      • 之前有一段时间可以通过接口进行获取,但现在支付宝取消了这个接口
  • 2018年7月2日:

    • 题外话:

      • 又好一段时间才捡起这个项目.对支付宝这个反爬开始绝望了.
      • 最近应该会研究下...感觉selenium解决不了问题...
    • 更新项目:

      • 解决了下Windows控制台的报错的问题(加入了一个win_unicode_console包)
      • 删除了一些无用的代码
  • 2018年3月14日:

    • 题外话:

      • 好一段时间没有更新了,支付宝的反爬有点强.慢慢研究~
    • 更新项目:

      • 加入二维码登录的方式(需要自己手动扫码)
  • 2018年2月4日:

    • 更新说明看Release
  • 2018年1月:

    • 将更新提上日程,在测试二维码登录.先上个半成品

    • 原先密码登陆的现在基本上不能用了.因为个人页面多了一种反爬手段,其次就是跳出二维码页面.

    • 上面这些问题,将在之后尽量解决.

  • 大概在2017年11月~12月的样子:

    • 开始出现跳出验证码页面了.原因应该是支付宝反爬的模型增强了.

    • 这段时间维护时间不多,都是个人测试没有更新代码上去

  • 2017年10月 参加DoraHacks时:

    • 当时能够获取到账单和账户信息.

开发环境

  • 系统版本:Win10 x64

  • Python版本:3.4.4

    • Python库版本列表:
      • win_unicode_console: 0.5

      • Pillow: 5.0.0

      • Scrapy:1.5.0

      • selenium:3.13.0

      • requests:2.18.4

      • pymongo:3.6.1

      • python_dateutil:2.7.0

  • Ps: 一定要配好Python的环境,不然Scrapy的命令可能会跑不起来


安装和运行方式

* 安装库
# !!!最新登录方式(暂未加入命令, 切换登录需要自己的去改动代码) --- 推荐方式!!!
python cmdline_start_spider.py

    # 项目根目录下,打开命令行
    windows下:
    pip install -r requirements.txt
    
    Linux 下:
    pip3 install -r requirements.txt (py2没有测试过, 感兴趣的可以测试一下)
  • 启动(可以忽略不看)
    # 项目根目录下,启动爬虫
    scrapy crawl AlipaySpider -a username="你的用户名" -a password="你的密码"
    
    # 必选参数
    -a username=<账号>
    -a password=<密码>
    
    # 可选参数
    -a option=<爬取类型>
    # 1 -> 购物; 2 -> 线下; 3 -> 还款; 4 -> 缴费
    # 这里面有四种类型数据对应四种不同的购物清单
    
    #####################################################
    # 实验版本
    scrapy crawl AlipayQR
    
    # 暂时还没有参数, 能登陆到个人页面了(概率到账单页面).

功能

  1. 模拟登录支付宝(账号密码和二位都可以登陆)
  2. 获取自定义账单记录和花呗剩余额度(2017年10月份的时候个人页面还有花呗总额度的,后面改版没有了.再之后又出现了,应该是支付宝内部在做调整)
  3. 数据存储在MongoDB中(暂时存储在MongoDB,后续支持sqlite,json或其他格式的数据)
  4. 日志记录系统,启动爬虫后会在项目根目录下创建一个Alipay.log的文件(同时写入文件和输出在控制台)

技术点

吐槽一下: 这点可能没啥好说,因为代码是从自己之前写的用非框架的代码搬过来的,搬过来之后主要就是适应Scrapy这个框架,理解框架的意图和执行顺序以及项目的结构,然后进行兼容和测试。

我这个项目主要就用到Spider模块(即爬虫模块),Pipeline和item(即写数据的管道和实体类)

Downloader的那块基本没做处理,因为核心还是在用selenium + webdriver,解析页面用的是Scrapy封装好的Selector.

Scrapy具体的流程看下图: (从官方文档搬过来的)

image


题外话

题外话模块: 上一段讲到了一个Selector,这个是东西是Scrapy基于lxml开发的,但是真正用的时候其实和lxml的selector有点区别.

举个例子吧:

# 两段相同的标签获取下面的文字的方式
# 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定位的方式有点不一样.

  1. selenium + lxml: 非框架
  2. Scrapy + selenium: Scrapy

未来的进度

  1. 解决账单获取的问题,目前基本都被二维码页面挡住了(需要研究一段时间, 暂时没有办法解决)

已经搁置的进度

  • 下面的搁置着先:

    1. 数据源保存的可选择性(从多源选择单源写入到多源写入)

    2. 修改配置文件的自由度(增加修改settings.py的参数)

    3. 尽可能优化爬虫的爬取速度

    4. 研究Scrapy的自定义命令的写法,提高扩展性

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].