|
- ^, i( J; e# h* o) m6 n 作者:kingnameGne[1]虽然在提取新闻正文的时候,准确率比较高,但由于提取新闻发布时间使用的是正则表达式,因此提取效果有时候不那么让人满意最近我发现Python的一个第三方库,叫做htmldate,经过测试,它提取新闻的发布时间比较准确。 ' h+ g. d6 {1 l1 p- h7 R
我们来看看这个库怎么使用首先使用pip安装:python3 -m pip install htmldate1.然后,我们使用Requests或者Selenium获得网站的源代码:import requests
2 B" @8 i0 j% j- B3 H) W# c1 S4 z from htmldate
3 p3 e: ~7 k2 K( K( j& d" ^ import find_date1 f0 ~6 K* l/ ~5 @
html = requests.get(https://www.kingname.info/2022/03/09/this-is-gnelist/).content.decode(utf-8) , E: ~2 K" Y' T! K# Q
) \3 a' }2 R D5 O8 Q- {5 X date = find_date(html)
. t5 d2 y. N) D; `2 y, W print(date)1.2.3.4.5.运行效果如下图所示: + O# @5 s6 ]! S" S V3 O
而这篇文章的发布时间,确实是3月9号: 0 k a/ L. e* Q: Y. Q+ d
我们再用网易新闻来看一下,相互激励 增进友谊(精彩绽放) |残奥|中国代表团|单板滑雪|夺金_网易政务[2] 这篇新闻对应的发布时间如下图所示:
/ I7 x; e& t7 N$ V 现在我们用Requests获得它的源代码,然后再提取发布时间: c/ h+ ]4 t0 p |: p. q
发布日期确实对了,但是后面的时间怎么丢失了呢?如果想把时分秒保留下来,可以增加一个参数outputformat,它的值就是你在datetime.strftime里面输入的值:find_date(html, outputformat=
$ {3 }2 _& ~7 [( a8 H' @ %Y-%m-%d %H:%M:%S)1.运行效果如下图所示:
7 M: J9 H; n% d4 S3 m9 S3 V# ~ find_date的参数,除了网页源代码外,还可以传入URL,或者是lxml里面的Dom对象,例如:fromlxml.html import fromstringselector = fromstring(html) & B1 S% Z- w7 r4 R; N& y
date = find_date(selector)1.2.3.4.参考文献[1] Gne: https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
5 Y. z5 P4 B$ P2 M$ H0 h0 @- G [2] 相互激励 增进友谊(精彩绽放) |残奥|中国代表团|单板滑雪|夺金_网易政务: https://www.163.com/news/article/H28Q6NQ1000189FH.html来源: 未闻Code 3 a% X2 R) B9 \) F
% [+ o2 y- j/ I
+ X: W; Q2 q7 o$ e$ L. ~1 J
) j. D9 t$ g$ V& l0 R
8 C2 f6 {( f" @. q, w& `' F |