zsxsoft / my-beancount-scripts

Git repo to save my Beancount scripts
357 stars 71 forks source link

CMB Credit Card Issue. #3

Closed StephenLeeUSTC closed 3 years ago

StephenLeeUSTC commented 4 years ago

在我使用的过程中,碰到eml账单文件无法解析的问题,原因是在我的文件中,分隔符有区别。解决问题的方式是:

     # balance = d.select('#fixBand16')[0].text.replace('RMB', '').strip()
-    date_range = d.select('#fixBand38 div font')[0].text.strip()
+    date_range = d.select('#fixBand6 div font')[0].text.strip()
     transaction_date = dateparser.parse(date_range.split('-')[1].split('(')[0])
     transaction_date = date(transaction_date.year, transaction_date.month, transaction_date.day)
     self.date = transaction_date
-    balance = '-' + d.select('#fixBand40 div font')[0].text.replace('¥', '').replace(',', '').strip()
+    balance = '-' + d.select('#fixBand7 div font')[0].text.replace('¥', '').replace(',', '').strip()

如果这个分隔符有可能改变,建议增加一下注释说明?如果有建议的修改但又缺少时间,我也可以帮助提交pr。Thanks

zsxsoft commented 4 years ago

由于我现在没有招商银行的卡了,因此无从确认这个fixBand的改动到底是哪儿的问题。我应当在README里注明一下,提醒大家关注Issue修改自己的脚本。

Heisenberg commented 4 years ago

编程小白想咨询个问题,我用的这个select语句没法使用超过3层,比如: bands = d.select("#fixBand29 #loopBand2>table>tbody>tr") #这个就不行 bands = d.select("#loopBand2 table tr") #这个就可以 想咨询下,这个问题该怎么解决的?

zsxsoft commented 4 years ago

@Heisenberg 这是CSS选择器,你的#fixBand29 #loopBand2>table>tbody>tr会选择

<div id="fixBand29">balabalabala<div id="loopBand2"><table><tbody><tr>select this</tr></tbody></table></div></div>

你需要自己对照页面的HTML检查选择是否正确

wych42 commented 4 years ago

看起来是招行的账单里时间只包含「月日」,没有带分隔符的年月日了。

招商银行「个人网银专业版」是个比较好的选择。可以下载csv格式的信用卡、借记卡的对账单

thelittlefox commented 3 years ago

@wych42 找到了,路径为 招行专业版---信用卡---账户管理---自助对账

可以按月查询一年内的信用卡消费-收入明细 可以按卡号后四位区分哪张信用卡进行的消费 可以下载为CSV文件

darouwan commented 3 years ago

今天在使用, 也是无法解析, 可能招行又改格式了~还是下csv吧

bingzhangdai commented 3 years ago

@thelittlefox 只能找到按信用卡账单日查询,并且下载也只能pdf,并没有找到下载csv的入口 image