本帖最后由 v.n.lee 于 2019-10-27 22:23 编辑
好激动第一次发自己写的码
纯粹的兴趣爱好,工作之余打发闲时间。这是我写的第三个软件了,第一个是自己工作用来就算的,第二个是爬取小草的,还是有妹子才有动力,网上爬妹子图的教程真多。
一键操作需要自己在代码中写明账户密码,也可以选择手工登录后再操作。程序也没做什么异常处理,自己用用还可以。
关于浏览器窗口大小的设置,这个可能具体的电脑屏幕分辨率有差异,需要自行设定,我在两台电脑上跑有一台就提示鼠标越界了,得重新设置。
一早摸索设定坐标,搞得我头都大了,后来找了个专门取坐标的软件。
顺便问问我在网上看教程有些说可以用phantomjs来操作的,我在网上搜就卡在第一步了,安装上完全没反应,网上有的说现在已经不支持了。有没有能处理FLEX项目的库呢,
想寻找便利的操作方法,还有就是为啥网上很多给selenium加cookie的教程方法试了都不行呢,用requests可以但是selenium就是不行
这次更新一下代码,更简洁了,也处理了一些异常,不用再模拟鼠标点击
直接上源码
[Python] 纯文本查看 复制代码 # -*- coding: utf-8 -*-
# 主题 : 苏宁易购试用申请
# 版本 : 1.2(Python 3)
# 时间 : 2019.10.27
# 作者 : 池塘里的大鳄鱼
# 说明 : 更新使用cookie登陆功能
import requests
import re
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import win32api, win32con
from time import sleep
# from cookies import wap_cookies
# 获取需要申请的商品ID
def get_product_id(driver):
product_id_list =[]
for i in range(4):
url = 'https://try.m.suning.com/mtp-web/api/index/batchCategoryProductBriefInfoByPageList/getFreeTabData-1-10{}--1-1000.jsonp'.format(i)
driver.get(url)
info = driver.page_source
id = re.findall('"applyId":0,.*?"productId":(.*?),', info)
product_id_list += id
return product_id_list
# 主程序
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()
# driver.delete_all_cookies()
# driver.delete_all_cookies()
# driver.get('https://m.suning.com')
# cookies = wap_cookies()
# c = 0
# for cookie in cookies:
# c += 1
# driver.add_cookie(cookie)
# if c % 10 == 0:
# print('正在加载cookie...')
# if c == len(cookies):
# print('cookies加载完毕!')
# 等待登陆
# win32api.MessageBox(0, "请在网页上登录后到Python中继续下一步操作!", "登陆确认", win32con.MB_OK)
# 等待用户登录
input('*' * 10 + '按回车键继续操作' + '*' * 10)
print('-' * 35)
print('程序正在自动执行中...')
ids = get_product_id(driver)
i = 0
print('共有{}项商品待进行申请'.format(len(ids)))
for id in ids:
try:
url = 'https://c.m.suning.com/sy_content.html?productId=' + id
driver.get(url)
sleep(1)
driver.find_element_by_css_selector('button.applyIt').click()
try:
driver.find_element_by_css_selector('.sc_house_shop').click()
sleep(1)
driver.find_element_by_css_selector('div.applyIt').click()
sleep(1)
driver.find_element_by_css_selector('.fixed_order_submit').click()
i += 1
print('已完成{}个申请'.format(i))
except:
driver.find_element_by_css_selector('.fixed_order_submit').click()
i += 1
print('已完成{}个申请'.format(i))
except:
continue
if i > 50:
print('已达到当日最大申请数,请明天再申请')
break
win32api.MessageBox(0, '共执行{}个任务'.format(i), '执行完毕', win32con.MB_OK)
print('任务结束,共申请{}个商品。')
# driver.close()
if __name__ == '__main__':
main()
1.0版
苏宁试用一键申请.zip
(2.04 KB, 下载次数: 56)
1.0版https://www.lanzouj.com/i6gqesf
1.1版
苏宁试用一键申请1.1.rar
(1.61 KB, 下载次数: 95)
1.1版https://www.lanzouj.com/i70z5if
|