Python веб-соскоб с регулярным выражением

Может ли кто-нибудь помочь мне с небольшим количеством кода, который я хотел бы создать, чтобы получить статистику из игры? Я могу поместить HTML в BeautifulSoup, но я не знаю, как правильно отформатировать регулярное выражение, чтобы получить конкретный бит данных со всей страницы. Вот что у меня есть:

from urllib import urlopen
from bs4 import BeautifulSoup
import re

content = urlopen('http://www.worldoftanks.com/community/accounts/1000395103-FrankenTank').read()
soup = BeautifulSoup(content)
print soup

Если бы вы могли показать мне, как вытащить одну статистику, я могу выяснить остальные. Одна из характеристик - это "Сражения при участии" (10103), закодированные так:

<tr>
<td class=""> Battles Participated: </td>
<td class="td-number-nowidth"> 10 103 </td>
</tr>

Спасибо!

Фрэнк

2 ответа

Решение

В поисках дерева:

battles = soup.find('td', 'td-number-nowidth')
if battles:
   print(battles.get_text())

Содержит ли число, которое вы хотите извлечь, промежуток между ними? Если это так, я бы сделал что-то похожее на это:

m = re.search('class="td-number-nowidth">(\d+) (\d+)</td>', soup)
if m:
    print(m.groups())

groups () возвращает строку tuple который будет содержать "10" и "103", поэтому вам может потребоваться объединить их вместе или оставить как string введите или разберите его в int для ваших целей.

matched = m.groups()
num = matched[0] + matched[1]
finalnumber = int(num)
Другие вопросы по тегам