先看这样一张图片(来自amazon后台卖家账单截图,具体金额已脱敏)
最近一直在从事爬虫相关开发工作,这次爬的是amazon卖家后台的账单数据。在图上面可以看到有四个大项(Beginning balance、Orders、Refunds、Closing balance)以及多个可能重名的小项。 在存数据时,为了分辨出某个值是属于哪个具体项的,就需要把大项与小项的label进行拼接了。如Orders下的Product charges要转换为orders_product_charges。
拼接很简单,就是把空格替换成下划线,然后调用lower()函数转小写就可以了。如果仅仅是这样,我也不会记录这篇文章了。之所以记下来,是为了特殊情况的处理。在图中可以看到,有类似这种的特殊字符Other (shipping & gift wrap credits)、Previous statement's unavailable balance。这里我们需要将括号中的内容和'符号丢弃,用到了一个关键的东西,那就是正则。
- 用正则将括号里的东西丢掉,从Other (shipping & gift wrap credits)变成Other
words = re.findall('(.*)?\(', word)
if len(words) == 1:
word = words[0]
- 使用sub()函数去掉非英文字符、非下划线的字符
word = re.sub('[^a-z_]', '', word)
整个转换就完成了,将来也许会加入更多的规则,但目前看已足够使用。毕竟平台界面以及反爬虫规则都是时时刻刻在变的,我们及时跟进就可以了。