2015-04-07 3 views
-2

Как использовать regexp в python для извлечения даты из тегов html <div>. Html что-то вроде этогоСравнение шаблонов в Python regexp

<div><strong>Date:<\/strong> Monday April 6, 2015 at 4:41PM <div>

мне нужно получить дату в «гггг-мм-дд чч: мм» формат. Выход для этого должен быть «2015-04-06 16:41»

+0

Можете ли вы показать «yyyyddmmhhmm» своим примером? – Kasramvd

+0

Используйте 'DOM' и' XPath' для извлечения данных из html. расширение lxml может сделать это, например. – hek2mgl

ответ

2

Вместо подхода к проблеме с регулярными выражениями (см RegEx match open tags except XHTML self-contained tags), я хотел бы использовать HTML Parser, BeautifulSoup и dateutil для извлечения даты. После извлечения даты, используйте strftime() сбросить его в строку в нужном формате:

>>> from bs4 import BeautifulSoup 
>>> from dateutil import parse 
>>> s = "<div><strong>Date:</strong> Monday April 6, 2015 at 4:41PM <div>" 
>>> text = soup.find('div').text 
>>> parse(text, fuzzy=True).strftime("%Y-%d-%m %H:%M") 
'2015-06-04 16:41' 
+0

Не 'lxml' больше подходит для случаев использования в реальном мире? – hek2mgl

+0

@ hek2mgl это мнение основано, я бы сказал. Существуют разные пакеты для одной и той же задачи. Хотя я не видел библиотеку настолько простой в использовании и естественной, как «BeautifulSoup». – alecxe

+0

(Я новичок в Python) Не доступ к элементам через XPath более прост и удобен в обслуживании, если HTML изменяется, чем переходить через каждый узел до цели? Я имею в виду, что Beatifulsoup может использовать lxml в качестве анализатора низкого уровня, но не поддерживает xpath. Я не могу понять почему. – hek2mgl

0

Это невозможно с RegEx в одиночку, как вы не можете соответствовать месяц, когда он не в источнике.

Смежные вопросы