2014-05-08 3 views
0

Добрый вечер. я получил следующий HTML-код:Почему мой код регулярного выражения python работает неправильно?

<tr> 
    <td>value:</td> 
    <td>0</td> 
</tr> 

Этот код является частью полного HTML-страницы. Я хочу проанализировать значение во втором td-теге.

Это моя попытка:

pattern = re.compile('<td>value:</td>.*?<td>(.*?)</td>', re.S) 
value = pattern.search(source_code).group(1) 

source_code является полный исходный код веб-страницы.

Когда я запускаю этот код, я получаю сообщение: AttributeError: 'NoneType' object has no attribute 'group'

+0

* Вздох *. В самом деле. –

ответ

5

Do not parse HTML with regex.

Вместо этого используйте специализированный инструмент, HTML-парсер, как BeautifulSoup:

>>> from bs4 import BeautifulSoup 
>>> data = """<tr> 
... <td>value:</td> 
... <td>0</td> 
... </tr>""" 
>>> soup = BeautifulSoup(data) 
>>> soup.find('tr')('td')[1].text 
u'0' 
>>> soup.find('td', text='value:').find_next_sibling('td').text 
u'0' 
+0

О, круто, я об этом не думал. Благодаря! – namespace

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