|
3 w* y) o+ L: m* Z4 H
作者:kingnameGne[1]虽然在提取新闻正文的时候,准确率比较高,但由于提取新闻发布时间使用的是正则表达式,因此提取效果有时候不那么让人满意最近我发现Python的一个第三方库,叫做htmldate,经过测试,它提取新闻的发布时间比较准确。
1 ?- {8 ^5 h! t/ C- n5 M' [% X5 u 我们来看看这个库怎么使用首先使用pip安装:python3 -m pip install htmldate1.然后,我们使用Requests或者Selenium获得网站的源代码:import requests6 a% {. h+ w: N& I# M. O: j' y
from htmldate 0 P$ t- H# U+ x" h- ?
import find_date0 a* v: S" }( H$ K$ W8 l
html = requests.get(https://www.kingname.info/2022/03/09/this-is-gnelist/).content.decode(utf-8)
9 Y" \6 q; j6 h* L6 ^" q9 B
@+ k; o+ U7 b2 C6 i: ` date = find_date(html): r3 w9 ~% j: O5 s; R3 H$ o
print(date)1.2.3.4.5.运行效果如下图所示: ! _& X$ k, U: v* L, O! K
而这篇文章的发布时间,确实是3月9号: 9 L u0 a% r" L- h) O
我们再用网易新闻来看一下,相互激励 增进友谊(精彩绽放) |残奥|中国代表团|单板滑雪|夺金_网易政务[2] 这篇新闻对应的发布时间如下图所示: , E: `* c+ I7 e5 o+ [0 [5 H
现在我们用Requests获得它的源代码,然后再提取发布时间: 4 y `4 Q4 L& ^( X" j
发布日期确实对了,但是后面的时间怎么丢失了呢?如果想把时分秒保留下来,可以增加一个参数outputformat,它的值就是你在datetime.strftime里面输入的值:find_date(html, outputformat=
! W0 I' _) _8 F %Y-%m-%d %H:%M:%S)1.运行效果如下图所示: ; ~ s5 L7 W+ k1 j- B! J- s+ f
find_date的参数,除了网页源代码外,还可以传入URL,或者是lxml里面的Dom对象,例如:fromlxml.html import fromstringselector = fromstring(html) 0 I$ k, Q4 l$ F& o# G2 f
date = find_date(selector)1.2.3.4.参考文献[1] Gne: https://github.com/GeneralNewsExtractor/GeneralNewsExtractor + }6 [/ w. O/ S
[2] 相互激励 增进友谊(精彩绽放) |残奥|中国代表团|单板滑雪|夺金_网易政务: https://www.163.com/news/article/H28Q6NQ1000189FH.html来源: 未闻Code
& \# L; B. v% P! A( b
+ F9 B2 G/ N- [* }& u2 b* C+ Q
- E9 \1 c/ M2 L9 j, C; |
0 z, _# a3 g2 c7 H; t% O9 i) D* \* g' A, l( r" K
|