2014-06-30 82 views
0

我想從下面的代碼中提取「1381912680」:檢索CSS選擇器的內容

[<abbr class="timestamp" data-utime="1381912680"></abbr>] 

使用Python 2.7,這是我目前在我的代碼去那個階段:

s = soup.find_all("abbr", { "class" : "timestamp" }) 
     print s 

我應該使用正則表達式還是BS可以自己做它?

編輯

我試圖使用正則表達式,但沒有運氣:

import re 

regex = 'data-utime=\"(\d+)\"' 
x = re.compile(regex) 
x2 = re.findall(x, s) 
print x2 

我:類型錯誤:預期的字符串或緩衝區

+2

正則表達式似乎很好,如果你知道所有的''將無子女。如果是這種情況,請使用'data-utime = \「(\ d +)\」'來允許交換屬性。 – AlexR

+0

我認爲這個線程可能會幫助你:http://stackoverflow.com/questions/19602398/python-beautiful-soup-content-property – pazitos10

+0

感謝您的幫助球員,我試圖申請正則表達式,但沒有運氣,你可以請有一個看看編輯後的qn。 – user3374113

回答

1

你可以使用下面的正則表達式來提取號碼在雙引號內,

(?<=data-utime=\")[^\"]* 

DEMO

Python代碼會是這樣,

>>> import re 
>>> str = '[<abbr class="timestamp" data-utime="1381912680"></abbr>]' 
>>> m = re.findall(r'(?<=data-utime=\")[^\"]*', str) 
>>> m 
['1381912680'] 

說明:

  • (?<=data-utime=\")正則表達式引擎剛過設置標記的字符串data-utime="
  • [^\"]*匹配反對票字符零次或更多時間直到文字"
2

Python的儲備類,所以你使用以下格式:

s= soup.find("abbr", class_="timestamp") 

但是...... <abbr>是空的,所以用上面的答案:)