搜索html文本Python

Cia*_*ran 0 python regex beautifulsoup

我使用urllib2来获取网页,我需要在返回的数据中查找特定值.

使用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>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想返回"示例BLAB BLAB BLAB".唯一保持持久的是"示例",我想返回此特定标记内的所有数据.

fal*_*tru 5

不要使用正则表达式来解析html/xml.

使用BeautifulSoup,您可以使用css选择器:

>>> 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
Run Code Online (Sandbox Code Playgroud)