Skip to main content
 首页 » 编程设计

Python之BeautifulSoup之HTML 解析

2025年05月04日12mengfanrong

这是网站代码片段

<td class='vcard' id='results100212571'>    
 <h2 class="custom_seeMore"> 
  <a class="fn openPreview" href="link.html">Hotel Name<span class="seeMore">See More...</span></a> 
 </h2>  
 <div class='clearer'></div>  
 <div class='adr'> 
  <span class='postal-code'>00000</span>  
  <span class='locality'>City</span>  
  <span class='street-address'>Address</span> 
 </div> 
 <p class="tel">Phone number</p> 

然后我尝试解析它

for element in BeautifulSoup(page).findAll('td'): 
    if element.find('a', {'class' : 'fn openPreview'}): 
        print element.find('a', {'class' : 'fn openPreview'}).string 
    if element.find('span', {'class' : 'postal-code'}): 
        print element.find('span', {'class' : 'postal-code'}).string 
    if element.find('span', {'class' : 'locality'}): 
        print element.find('span', {'class' : 'locality'}).string 
    if element.find('span', {'class' : 'street-address'}): 
        print element.find('span', {'class' : 'street-address'}).string 
    if element.find('p', {'class' : 'tel'}): 
        print element.find('p', {'class' : 'tel'}).string 

我知道这是非常业余的代码,但它几乎可以工作。即它适用于除“fn openPreview”之外的所有类,所有其他类都绘制其内容,但是

print element.find('a', {'class' : 'fn openPreview'}).string  

打印无

请帮助我,如何解析它。

请您参考如下方法:

According to the BeautifulSoup documentation , 如果 element 有多个 child ,element.string 将为 None。

在你的情况下,

print element.find('a', {'class' : 'fn openPreview'}).contents[0].string 

将打印“酒店名称”。