首页
留言
友链
架子鼓
更多
壁纸
直播
时光机
关于
Search
1
谷豆电视直播代理源码,谷豆代理原理解析
45,166 阅读
2
华为鸿蒙系统无法安装 xapk APP 闪退 ( youtube vanced ) 的解决办法
27,006 阅读
3
[转载]青龙面板+Ninja从零安装教程
19,149 阅读
4
docker 之 typecho 镜像-不推荐
13,112 阅读
5
typecho插件 - 在线下载主题到服务器 - addTheme 发布
8,894 阅读
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
登录
Search
标签搜索
msyql
主从
华为
鸿蒙
xapk
闪退
APP 闪退
kindle
mobi
docker
pip
alpine
梦浪的小虾米
累计撰写
143
篇文章
累计收到
588
条评论
首页
栏目
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
页面
留言
友链
架子鼓
壁纸
直播
时光机
关于
搜索到
1
篇与
的结果
2021-11-03
[转载]python 自动卖出京东黄金
上个月看到虎友买卖京东积存金的,我也随手买了点。金价一直在 385 上下波动,我在 381 元时买入了两次,然后 388 左右卖出(并不推荐这样做,投机短线交易不可取),都小赚了一点点。老是看金价或者关注自动推送(是的,我还简单弄了个钉钉机器人监控价格哈哈)的话还是有点累,就想着拿 python 写个自动交易卖出的。看了请求加密一堆参数也懒得分析了,selenium 开干。大致如下,自行改造吧。简单写写,写的比较乱。只做了卖出,买入还是谨慎些,没考虑做。需要 Python3 环境,需要修改的地方就是那些 xxxxxxxxxxxxxxx。建议单步调试代码,看一下大致逻辑再使用。或者仅供参考,自己重新实现。20210201 11:00 成功自动卖出import json import sys import traceback from selenium import webdriver import time, requests def getLatestPrice(): url = 'https://api.jdjygold.com/gw/generic/hj/h5/m/latestPrice?reqData=%7B%7D' response = requests.get(url=url) print(response) print(response.headers) jsonRes = json.loads(response.content) price = float(jsonRes['resultData']['datas']['price']) print(time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime()), '最新价', price) return price def openJdjyGold(): webdriverPath = "C:\Program Files\Google\Chrome\Application\chromedriver.exe" # webdriver路径 activityUrl = "https://m.jdjygold.com/finance-gold/newgold/index" sellGoldUrl = "https://m.jdjygold.com/finance-gold/newgold/sellGold/" # 如果直接去卖金的地方,可能来不及注入cookie browser = webdriver.Chrome(executable_path=webdriverPath) browser.set_window_size('400', '700') browser.get(activityUrl) browser.delete_all_cookies() # 读取cookie写入。第一次使用时注释掉这段,手动登陆一次后用下面的更新存储。自行改造啦。 with open('cookies.json', 'r', encoding='utf-8') as f: listCookies = json.loads(f.read()) for cookie in listCookies: browser.add_cookie({ 'domain': cookie['domain'], 'name': cookie['name'], 'value': cookie['value'], 'path': '/', 'expires': None }) # 更新一下文件存储的cookie cookies = browser.get_cookies() jsonCookies = json.dumps(cookies) with open('cookies.json', 'w') as f: f.write(jsonCookies) browser.get(sellGoldUrl) return browser def sellGold(): print('开始卖出') browser = openJdjyGold() time.sleep(2) # 已经到卖出的页面了 # 全部卖出的文字按钮,可以优化为 find_elements_by_class_name sellAllBtn = browser.find_elements_by_css_selector( "#app > div > div.inputBox > div.input_content > div.input-row.flex.flex-align-center > p") sellAllBtn[0].click() # 点一下卖全部,填入数量 time.sleep(0.5) # 勾选我已阅读xxx checkIHaveReadRules = browser.find_element_by_class_name("check-icon") checkIHaveReadRules.click() time.sleep(0.5) # 卖出页面下方的 立即卖出 startSellBtn = browser.find_element_by_class_name("jrm-common-btn") startSellBtn.click() time.sleep(2) # 然后是输入密码,找到全部密码按键存到dict passwordBtnDict = {} allPasswordBtn = browser.find_elements_by_class_name("sys-itemW") for btnItem in allPasswordBtn: if btnItem.text != '': # 有两个按键用不上 passwordBtnDict[btnItem.text] = btnItem payPassword = "xxxxxxxxxxxxxxx" # 支付密码,不要泄露了............................. for bitPwd in payPassword: passwordBtnDict[bitPwd].click() # 输入完最后一位,就自动确定了 # 然后忘了还有没有进一步的确定。。。。。。 time.sleep(10) sendDingtalkNotify('完成卖出') browser.quit() def autoSellGold(expectPrice): while True: try: latestPrice = getLatestPrice() if latestPrice > expectPrice: sendDingtalkNotify('''最新价{}元/g,高于预期的{}元/g,准备全部卖出'''.format(latestPrice, expectPrice)) sellGold() sys.exit(0) else: print('未达预期', expectPrice, ',不卖') except Exception as e: traceback.print_exc() sendDingtalkNotify('京东积存金自动交易出错,需要处理') sys.exit(1) finally: time.sleep(30) def sendDingtalkNotify(msg): print('sendDingTalkMsg', msg) url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxx' headers = { 'Content-Type': 'application/json' } data = { "msgtype": "text", "text": { "content": "[bot]" + msg + "@xxxxxxxxxxxxxxx" }, "at": { "atMobiles": ["xxxxxxxxxxxxxxx"], "isAtAll": False } } response = requests.post(url=url, headers=headers, json=data) print(response.content) if __name__ == '__main__': buyPrice = 383 # 买入价格,如果想不亏的话,需要的涨幅应该是手续费0.3% minimumPrice = round(buyPrice * 1.003, 3) print('''{}买入的话,最少应该{}才能卖'''.format(buyPrice, minimumPrice)) expectPrice = minimumPrice * 1.01 # 期望价格,可以自己改一下 autoSellGold(expectPrice)
2021年11月03日
1,269 阅读
0 评论
0 点赞