2015-04-02 3 views
-3

Я новичок в использовании Python Regex. Я пытаюсь вытащить некоторые данные из HTML и не уверен, что правильный синтаксис должен сделать это правильноАнализ HTML с Python Regex

У меня есть следующие данные, и я хочу вытащить данные Birthdate = '4 июля 1969 года, Родной город = 'Colts Neck, Нью-Джерси', колледж = 'Penn State, 1991', послевузовское = 'Вирджиния, 1996'

data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table> 
Birthdate = re.findall(r'<b>Birthdate:</b>(.*)<br/>', data) 
Hometown = re.findall(r'<b>Hometown:></b>(.*)<br/>', data) 
College = re.findall(r'<b>College:</b>(.*)<br/>, data) 
Post-graduate = re.findall(r,<b>Post-graduate:</b>(.*)<td/>, data) 

Правда, я не использую re.findall или подстановочные (.*) правильно здесь, потому что я получите возвращаемую строку, которая начинается с значения, которое я хочу, и доходит до конца до последнего тега
. Я хотел бы использовать функцию, которая извлекает данные между шаблоном, который я определяю (.*) в этом примере.

+6

Ну, есть много HTML парсеры там. Не используйте для этого регулярные выражения. – n0rd

+3

Выберите html-парсер. Regex обречен нестандартным HTML, который браузеры вынуждены работать. См. Также «tidy», как фильтр, если парсер, который вы выберете, не работает. –

ответ

1

Если вы хотите использовать regex то вы можете рассмотреть это,

>>> import re 
>>> s = '''data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table>''' 
>>> dict(re.findall(r'<b>([^:]*):</b> *([^<]*)', s)) 
{'Hometown': 'Colts Neck, N.J.', 'Birthdate': 'July 4, 1969', 'College': 'Penn State, 1991', 'Post-graduate': 'Virginia, 1996'} 
+0

Благодарим за помощь. Этот re.findall и преобразование в словарь отлично работали для того, что мне нужно было сделать. Какие библиотеки лучше использовать для этого вида анализа в будущем? –

+0

В дальнейшем используйте парсер BeautifulSoup. –

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