![网络数据采集技术:Java网络爬虫实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/251/33831251/b_33831251.jpg)
2.8 日期和时间处理
java.util包提供的处理日期和时间的类有SimpleDateFormat、DateFormat、Date以及Calendar。其中,SimpleDateFormat和DateFormat类用来实现日期和时间的格式化,常使用的方法有format(Date date)和parse(String source);Date类主要处理指定格式的时间;Calendar类主要用于年月日类型数据的转换。
在采集数据时,不同网站的时间使用格式可能不同。而不同的时间格式,会为数据存储以及数据处理带来一定的困难。例如,图2.13所示为某汽车论坛中的时间使用格式,包含“yyyy-MM-dd”和“yyyy-MM-dd HH:mm”两种格式;图2.14所示为某新闻网站中的时间使用格式为“yyyy-MM-dd HH:mm:ss”。
针对汽车论坛中的“yyyy-MM-dd”和“yyyy-MM-dd HH:mm”格式,可以统一转化成“yyyy-MM-dd HH:mm:ss”格式,以方便数据存储以及后期数据处理,如程序2-14所示。在程序2-14中,parseStringTime()方法的作用是将字符串类型的时间标准化成指定格式的时间,这里通过调用DateFormat类中的parse()方法和format()方法来实现。
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_36_02.jpg?sign=1739593283-KDSIrtR7XZBKCWixWtsR8T2WjzeBoTtA-0-dfd47ca21b29f5ca2dce21a7c9009526)
图2.13 某汽车论坛中的时间使用格式
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_37_01.jpg?sign=1739593283-Tn27G5lrG0Ivm2n22nz3oRv6M8hOS3Cc-0-f7cd0e09ae3e11eb0c1af70c298bd0bf)
图2.14 某新闻网站中的时间使用格式
程序2-14
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_37_02.jpg?sign=1739593283-4DIA3UkbiNoiuX4CmkcxfTMn9BRGgP5l-0-c9bf8a8f82463a614e8a5c771fd2b840)
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_38_01.jpg?sign=1739593283-UCdIiAeRD5wo1FsL4SjdI7AKpxL1lplX-0-ffb01ff5cb00e504d4df6e1ea0558432)
图2.15所示为程序2-14的输出结果。
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_38_02.jpg?sign=1739593283-KxGcrb3PQFmV7SpR0mwrQmabKONsdVFV-0-e05347654f0858c036360956376791ce)
图2.15 格式化时间
另外,采集数据时,通常需要记录每一条数据的采集时间。图2.16所示为采集的汽车销量数据,字段craw_time表示采集每条记录的时间信息。程序2-15给出了获取当前时间的一个通用方法。在该方法中,使用了Date类的无参构造方法创建了一个Date对象,进而获取当前时间。
程序2-15
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_38_03.jpg?sign=1739593283-MlsdnykuuOJYpJH5BbY1HQlKae5Iafvd-0-61f1d0f1fd2bec0c0436bd9bf5b32268)
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_38_04.jpg?sign=1739593283-U9aEgrDDHN8bETki6WXvsNYrkua2gtRf-0-aa49d117a5ebb653ab6209f959395b09)
图2.16 采集的汽车销量数据
再者,一些网站的时间格式为UNIX时间戳(即从1970年1月1日开始经过的秒数)。图2.17所示为国外某艺术品网站,基于浏览器抓包(下一章中讲解),发现该网页的时间格式为UNIX时间戳,如图2.18所示。为将UNIX时间戳转化为指定格式的时间,需要构造一个通用的方法,如程序2-16所示。
程序2-16
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_39_01.jpg?sign=1739593283-M9Nqn5lBVpPmDNH4IRJ6Vnho0OZBCg1p-0-963127902dcc46f2e0febd0b19252338)
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_39_02.jpg?sign=1739593283-PwDUrN9VCn18nSG3SUYHMv1v63faU4q1-0-65d150c56db737e39f400d48c1171013)
图2.17 国外某艺术品网站
![](https://epubservercos.yuewen.com/CDDCA8/18096059701207306/epubprivate/OEBPS/Images/37607_39_03.jpg?sign=1739593283-7iHU9p2MJOIUyLr8trzWOXj0Qd2C8bed-0-970e087b5e916f266aa1cc46bc59871e)
图2.18 网页中的UNIX时间戳