# -*- coding: utf-8 -*-

# 主题 : 苏宁易购试用申请

# 版本 : 1.0(Python 3)

# 时间 : 2019.09.28

# 作者 : 池塘里的大鳄鱼

# 说明 : 需要先在59、60行输入账号密码,登录次数过多会出现滑块验证可将56-61行注释掉,选择下方63-66行手动登录方式。申请次数上限好像是50次/天。鼠标点击坐标值可能需要重设

import requests

import re

from selenium.webdriver.common.action_chains import ActionChains

from selenium import webdriver

import win32api,win32con

from time import sleep

# 获取所有试用商品

def get_all_product_id():

urls = ['https://try.m.suning.com/mtp-web/api/index/batchCategoryProductBriefInfoByPageList/getFreeTabData1569656586954-1-101--1-1000.jsonp',

'https://try.m.suning.com/mtp-web/api/index/batchCategoryProductBriefInfoByPageList/getFreeTabData1569656734752-1-103--1-1000.jsonp',

'https://try.m.suning.com/mtp-web/api/index/batchCategoryProductBriefInfoByPageList/getFreeTabData1569656778689-1-102--1-1000.jsonp',

'https://try.m.suning.com/mtp-web/api/index/batchCategoryProductBriefInfoByPageList/getFreeTabData1569656845737-1-104--1-1000.jsonp']

product_id_list = []

for url in urls:

r = requests.get(url)

info = r.text

product_id = re.findall('(?<="productId":)(.*?)(?=,)', info)

product_id_list += product_id

return product_id_list

# 获取商品子ID

def get_child_id(driver, product_id): # 需设置火狐浏览器

url = 'https://c.m.suning.com/sy_content.html?productId=' + product_id

driver.get(url)

page = driver.page_source

child_id = re.findall('(?<=data-id=")(.*?)(?=")', page)

return child_id

# 检测已经申请过的所有商品

def cheek_exist_product(driver):

url = 'https://c.m.suning.com/sy_myApply.html?code=0'

driver.get(url)

page = driver.page_source

product_id = re.findall('(?<=data-productid=")(.*?)(?=")', page)

return product_id

# 主程序

def main():

driver = webdriver.Firefox()

driver.set_window_size(370, 740) # 设置浏览器窗口大小, 配合鼠标定位使用

# 先登陆苏宁账号

driver.get('https://passport.suning.com/ids/login?service=https://aq.suning.com/asc/auth?targetUrl=https://m.suning.com/&loginTheme=wap_new')

driver.implicitly_wait(3)

sleep(1) # 休眠1秒

driver.find_element_by_css_selector('.other_btn1').click()

driver.implicitly_wait(3)

sleep(1)

driver.find_element_by_css_selector('#username').send_keys('苏宁账户名称')

driver.find_element_by_css_selector('#password').send_keys('苏宁账户密码')

driver.find_element_by_css_selector('div.btnBox:nth-child(7) > a:nth-child(1)').click()

# # 等待登陆

# win32api.MessageBox(0, "请在网页上登录后到Python中继续下一步操作!", "登陆确认", win32con.MB_OK)

# # 等待用户登录

# input('*' * 10 + '按回车键继续操作' + '*' * 10)

print('-' * 35)

print('程序正在自动执行中...')

all_ids = get_all_product_id()

all_ids = set(all_ids)

exist_id = cheek_exist_product(driver)

exist_id = set(exist_id)

ids = all_ids - exist_id

ids = list(ids)

i = 0

# driver.get('https://c.m.suning.com/snsy.html')

for id in ids:

i += 1

print('正在执行第{}个任务'.format(i))

cid = get_child_id(driver, id)

cid = cid[0]

print(cid)

url = 'https://c.m.suning.com/sy_applyIndex.html?adTypeCode=470001&id=' + cid

driver.get(url)

sleep(1)

ActionChains(driver).move_by_offset(300, 637).click().perform() # 点击申请 不同分辨率的电脑可能需要重新设置(300, 637)这个坐标

sleep(1)

ActionChains(driver).move_by_offset(-300, -637).perform() # 滚回鼠标位置 不同分辨率的电脑可能需要重新设置(-300, -637)这个坐标

print('共执行{}个任务'.format(i))

win32api.MessageBox(0, '共执行{}个任务'.format(i), '执行完毕', win32con.MB_OK)

driver.close()

if __name__ == '__main__':

main()

python秒杀神器苏宁_Python苏宁易购免费试用申请一键执行脚本源代码相关推荐

  1. python秒杀神器苏宁_【Python】[新人贴]苏宁易购免费试用申请一键执行 更新1.1版本...

    [Python] 纯文本查看 复制代码# -*- coding: utf-8 -*- # 主题 : 苏宁易购试用申请 # 版本 : 1.2(Python 3) # 时间 : 2019.10.27 # ...

  2. python秒杀神器苏宁_Python爬虫——实战三:爬取苏宁易购的商品价格

    苏宁易购的商品价格请求URL为 https://pas.suning.com/nspcsale_0_000000000152709847_000000000152709847_0000000000_1 ...

  3. python秒杀神器苏宁_50个抢票加速包,还不如这个Python抢票神器

    又到了一年一度的抢票大战,本来就辛苦劳累了一年,想着可以早点订到票跟家里人团聚.所以,许多人宁愿多花些钱去找黄牛买票. 但今年各种抢票软件的横行,还有官方出的加速包,导致连黄牛都不敢保证能买到票.你无 ...

  4. python秒杀神器_Python实现京东秒杀功能代码

    本文实例为大家分享了Python实现京东秒杀功能的具体代码,供大家参考,具体内容如下 #Python 3.5 #coding:utf-8 #import scrapy from selenium im ...

  5. python装饰器的顺序_python中装饰器的装饰顺序和执行顺序

    在python语言中"装饰器"模式被设计成语言内置的设计模式,使得使用该模式变得简单,仅仅需要在目标函数前使用'@'符号加装饰器名就能达到目的.但如果同一个目标函数需要进行多次装饰 ...

  6. python读取一行的函数_Python linecache.getline()读取文件中特定一行的脚本

    Python linecache.getline()读取文件中特定一行的脚本 比如: Code highlighting produced by Actipro CodeHighlighter (fr ...

  7. linux 端口转发软件,linux端口转发神器Socat一键配置脚本

    一.概述 目前常用的端口转发工具有rinetd.Haproxy.iptables.Socat前面2种只能转发TCP,后面TCP/UDP都可以转发.如果是需要udp转发的话,只能选择iptables.S ...

  8. 爬虫项目十:Python苏宁易购商品数据、评论数据爬取

    文章目录 前言 一.商品数据 1.分析url 2.解析数据 3.实现翻页 二.评论数据 前言 利用Python对苏宁易购商品数据评价数据实现爬取 提示:以下是本篇文章正文内容,下面案例可供参考 一.商 ...

  9. python scrapy 框架的简单使用爬虫苏宁易购图书信息

    python scrapy 框架的简单使用&&爬虫苏宁易购图书信息 前言 第一步: 分析网页 1.1 找到要爬取的数据位置 分类信息 图书信息 价格信息 1.2 分析如何获取数据 正则 ...

最新文章

  1. C# 控件开发中常用属性整理
  2. c语言24点游戏流程图,C语言解24点游戏程序
  3. react redux 相关技术
  4. 在WildFly上将JPA和CDI Bean与骆驼一起使用
  5. Oracle tips
  6. 做一个项目,平时都用到哪些工具提高效率(下)
  7. 访问linux端口失败_教你如何配置Linux服务器防火墙端口规则
  8. 如何快速成为C++工程师?
  9. android sh 指令_Android ADB Shell命令解析
  10. 2017 Multi-University Training Contest - Team 3 Kanade's trio(字典树+组合数学)
  11. mac 蓝牙 串口调试 助手(工具)
  12. 大三学生HTML期末作业,网页制作作业——HTML+CSS+JavaScript饮品饮料茶(7页)
  13. 大型互联网公司如何自建拥有独立AS号的IP网络
  14. ups机房动环监控系统方案
  15. 麒麟810处理器_华为携7nm麒麟810处理器 剑指高通
  16. 汽车芯片:缺货将诱发产业变革
  17. Java实战项目详细教程+文档+PPT+源码等]javaweb点餐系统全套|餐饮就餐订餐餐厅
  18. Atcoder abc257 E
  19. 鸿蒙系统笔记本电脑上市,华为:智能手表及笔记本电脑将搭载鸿蒙系统 手机明年上市...
  20. Jquery介绍及学习视频

热门文章

  1. Hayley Westenra 《Pure》 专辑收藏 -- By Emerald
  2. DIY智能插座(三) -- 蓝牙POS机改造
  3. 提升自我数据分析能力的根本,是方法论!
  4. C++抽象编程——回溯算法(6)——设计一般的双人游戏
  5. PCB BOM单制作规范
  6. override和overloading的区别?
  7. avue-crud 组件,form中实现树形下拉框联动输入框数据,省市区字典联动
  8. apt 的 update 和 upgrade 命令的区别是什么?
  9. geoserver java_GeoServer 安装教程
  10. 郭惠,吴迅.单片机c语言程序设计完全自学手册出版时间,(中北大学电气信息检索与写作实验二.doc...