一日一技:如何提取網頁中的日期?
Gne[1]雖然在提取新聞正文的時候,準確率比較高,但由于提取新聞發布時間使用的是正則表達式,因此提取效果有時候不那么讓人滿意。
最近我發現Python的一個第三方庫,叫做htmldate,經過測試,它提取新聞的發布時間比較準確。我們來看看這個庫怎么使用。首先使用pip安裝:
python3 -m pip install htmldate
然后,我們使用Requests或者Selenium獲得網站的源代碼:
import requests
from htmldate import find_date
html = requests.get('https://www.kingname.info/2022/03/09/this-is-gnelist/').content.decode('utf-8')
date = find_date(html)
print(date)
運行效果如下圖所示:
而這篇文章的發布時間,確實是3月9號:
我們再用網易新聞來看一下,相互激勵 增進友誼(精彩綻放) |殘奧|中國代表團|單板滑雪|奪金_網易政務[2] 這篇新聞對應的發布時間如下圖所示:
現在我們用Requests獲得它的源代碼,然后再提取發布時間:
發布日期確實對了,但是后面的時間怎么丟失了呢?如果想把時分秒保留下來,可以增加一個參數outputformat,它的值就是你在datetime.strftime里面輸入的值:
find_date(html, outputformat='%Y-%m-%d %H:%M:%S')
運行效果如下圖所示:
find_date的參數,除了網頁源代碼外,還可以傳入URL,或者是lxml里面的Dom對象,例如:
from lxml.html import fromstring
selector = fromstring(html)
date = find_date(selector)
參考文獻[1] Gne: https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
[2] 相互激勵 增進友誼(精彩綻放) |殘奧|中國代表團|單板滑雪|奪金_網易政務: https://www.163.com/news/article/H28Q6NQ1000189FH.html