diff --git a/newspaper/extractors.py b/newspaper/extractors.py index b7fe1def..6d3b869f 100644 --- a/newspaper/extractors.py +++ b/newspaper/extractors.py @@ -17,7 +17,8 @@ import re from collections import defaultdict -from dateutil.parser import parse as date_parser +from dateutil import parser as date_parser +from qddate import DateParser from tldextract import tldextract from urllib.parse import urljoin, urlparse, urlunparse @@ -230,6 +231,16 @@ def parse_date_str(date_str): if datetime_obj: return datetime_obj + # Uses qddate DateParser to find dates in any strings less than 150 chars long + dp = DateParser(generate=True) + nodes = doc.xpath('//*[string-length(text())<150]') + for node in nodes: + if node.text is None: + continue + datetime_obj = dp.parse(node.text) + if datetime_obj is not None: + return datetime_obj + return None def get_title(self, doc): diff --git a/requirements.txt b/requirements.txt index ccfccd37..58c3c0d2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ tldextract>=2.0.1 feedfinder2>=0.0.4 jieba3k>=0.35.1 python-dateutil>=2.5.3 +qddate>=0.1.0 \ No newline at end of file