2012-10-13 23 views
1

有人可以幫助我一些代碼,我想建立從遊戲拉統計? 我可以把HTML到BeautifulSoup,但我不知道如何正確格式化正則表達式來獲取整個頁面的特定位數據。 下面是我得到了什麼:Python的網頁與正則表達式

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> 

謝謝!

弗蘭克

+1

正則表達式與此有什麼關係?你正在使用一個合適的HTML解析器,你不想在這裏使用正則表達式.. –

回答

3

Searching the tree

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

完美的工作。統計數據全部重複使用相同的「td-number-nowidth」代碼。你會推薦什麼方法迭代到該字符串的下一個實例? –

+0

@User:你可以調用soup.find_all()來獲得所有結果作爲列表。 – jfs

+0

輝煌!謝謝 –

0

難道要拔出號碼包含之間的空間?如果是的話,我會做一些看起來像這樣:

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

組()返回一個字符串tuple將包含「10」和「103」,所以你可能需要一起將它們串聯,要麼把它作爲一個string輸入或解析爲一個int您的目的。

matched = m.groups() 
num = matched[0] + matched[1] 
finalnumber = int(num) 
+0

我認爲OP並不完全理解當你使用BeautifulSoup(一個合適的HTML解析器)時不需要正則表達式。 –

+0

我現在看到正則表達式並不需要。很酷。 Rarehunter你的代碼失敗了。可能我的2.7版本的python是問題所在。謝謝大家在這裏的指示。 (什麼是OP?) –

+0

OP代表「原創海報」或「原創帖子」。無論如何,我忘了提及,但是我在Python v3.2中編寫了我的代碼,因此版本錯誤可能是一個問題。謝謝你的收穫! – rarehunter