admin 管理员组文章数量: 1087131
python爬取支付宝基金数据
1、获取支付宝账单信息并存入数据库
from selenium import webdriver
from DbHandle import DbHandle
import time
# 登录 url
Login_Url = '.htm?goto=https%3A%2F%2Fwww.alipay.com%2F'
# 账单 url
Bill_Url = '.htm'
class Alipay_Bill_Info(object):
def __init__(self,user, passwd):
self.user = user
self.passwd = passwd
def wait_input(self, ele, str):
for i in str:
ele.send_keys(i)
time.sleep(0.5)
def get_data(self):
# 初始化浏览器对象
sel = webdriver.Chrome()
sel.maximize_window()
sel.get(Login_Url)
sel.implicitly_wait(3)
time.sleep(1)
# 找到用户名字输入框
sel.find_element_by_xpath('//*[@data-status="show_login"]').click()
uname = sel.find_element_by_id('J-input-user')
uname.clear()
print('正在输入账号.....')
self.wait_input(uname, self.user)
time.sleep(1)
# 找到密码输入框
upass = sel.find_element_by_id('password_rsainput')
upass.clear()
print('正在输入密码....')
self.wait_input(upass, self.passwd)
# 找到登录按钮
time.sleep(1)
butten = sel.find_element_by_id('J-login-btn')
butten.click()
# sel.save_screenshot('2.png')
print(sel.current_url)
# 跳转到账单页面
print('正在跳转页面....')
sel.get(Bill_Url)
sel.implicitly_wait(3)
time.sleep(2)
try:
sel.find_element_by_xpath('//*[@id="J-item-1"]')
except:
print("登录出错!")
sel.close()
return
db = DbHandle()
sql = "SELECT set_date FROM ali_pay_bill ORDER BY bid DESC LIMIT 1"
print(sql)
dateline = db.select_one(sql)
result = dateline['set_date']
result = result.replace('.', '')
result = result.replace('-', '')
result = result.replace(':', '')
dateline = int(result[2:])
print(dateline)
for num in range(10):
num = num + 1
al_day_xpath = '//*[@id="J-item-' + str(num) + '"]/td[1]/p[1]' #日期
al_time_xpath = '//*[@id="J-item-' + str(num) + '"]/td[1]/p[2]' #时刻
al_way_xpath = '//*[@id="J-item-' + str(num) + '"]/td[3]/p[1]' #方式
al_payee_xpath = '//*[@id="J-item-' + str(num) + '"]/td[5]/p[1]' #收款人
al_snum_xpath = '//*[@id="J-item-' + str(num) + '"]/td[4]/p[1]' #流水号
al_figure_xpath = '//*[@id="J-item-' + str(num) + '"]/td[6]/span' #金额
al_status_xpath = '//*[@id="J-item-' + str(num) + '"]/td[8]/p[1]' #交易状态
al_day = sel.find_element_by_xpath(al_day_xpath).text
al_time = sel.find_element_by_xpath(al_time_xpath).text
al_way = sel.find_element_by_xpath(al_way_xpath).text
al_payee = sel.find_element_by_xpath(al_payee_xpath).text
al_snum = sel.find_element_by_xpath(al_snum_xpath).text
al_figure = sel.find_element_by_xpath(al_figure_xpath).text
al_status = sel.find_element_by_xpath(al_status_xpath).text
single_data = self.handle_text(al_day,al_time,al_way,al_payee,al_snum,al_figure,al_status)
print(single_data)
if(single_data['set_time']<=dateline):
break
sql = "INSERT INTO ali_pay_bill (set_date, \
other, amount, sign,statu,way,code) \
VALUES ('%s', '%s', %s, %s, %s, '%s', '%s' )" % \
(single_data['set_date'], single_data['other'], single_data['amount'], \
single_data['sign'], single_data['statu'], single_data['way'], single_data['code'])
print(sql)
db.update(sql)
sel.close()
def handle_text(self,set_date,set_time,way,payee,snum,figure,status):
statu = 0
sign = 2
amount = 0
if '成功' in status:
statu = 1
if '+' in figure:
sign = 1
amount = float(figure[2:])
elif '-' in figure:
sign = 0
amount = float(figure[2:])
al_day = set_date+"-"+set_time
al_time = set_time.replace(':', '')
al_time = int((set_date+al_time).replace('.','')[2:])
return {'set_date':al_day,'set_time':al_time,'other':payee,'amount':amount,'sign':sign,'statu':statu,'way':way,'code':snum}
2、主类
from GetAlipayBill import Alipay_Bill_Info
import time
from datetime import datetime
# 登录用户名和密码
USERNMAE = ''
PASSWD = ''
while 1==1:
print("---------------请求时间" + datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "---------------------")
get = Alipay_Bill_Info(USERNMAE,PASSWD)
get.get_data()
time.sleep(60*10)
具体参考:
本文标签: python爬取支付宝基金数据
版权声明:本文标题:python爬取支付宝基金数据 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1687793233a142100.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论