2014-02-18 93 views
0

我使用urllib2來獲取網頁,並且我需要在返回的數據中查找特定值。搜索HTML文本Python

使用Beautiful Soup並使用find方法或使用正則表達式來搜索數據是最好的方法嗎?

這裏是由請求返回的文本的一個非常基本的例子:

<html> 
<body> 
<table> 
    <tbody> 
     <tr> 
     <td> 
      <div id="123" class="services"> 
       <table> 
        <tbody> 
        <tr> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> Example BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
        </tr> 

        <tr> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
        </tr> 

        <tr> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
         <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
        </tr> 
        </tbody> 
       </table> 
      </div> 
     </td> 
     </tr> 
    </tbody> 
</body> 
</html> 

在這種情況下,我想回到「示例BLAB BLAB BLAB」。唯一保持不變的是「Example」,我想返回這個特定標籤中的所有數據。

回答

5

Don't use regular expression to parse html/xml.

使用BeautifulSoup,您可以使用css selector

>>> from bs4 import BeautifulSoup 
>>> 
>>> html_str = ''' 
... <html> 
... <body> 
... <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> Example BLAB BLAB BLAB </td> 
... <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
... <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
... <td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td> 
... </body> 
... </html> 
... ''' 
>>> soup = BeautifulSoup(html_str) 
>>> for td in soup.select('.style8'): 
...  print(td.text) 
... 
Example BLAB BLAB BLAB 
BLAB BLAB BLAB 
BLAB BLAB BLAB 
BLAB BLAB BLAB 
+0

+1 THX的額外SO鏈接;) – zhangxaochen

+0

它不會對我的具體使用情況下工作,我還沒有完全解釋我認爲數據的結構。我編輯了原始文章 – Ciaran

+0

@Ciaran,你是否想在ID爲123的'div'內獲得第一個'td'元素的文本? – falsetru