首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - BeautifulSoup - HTML解析

Python - BeautifulSoup - HTML解析
EN

Stack Overflow用户
提问于 2011-03-24 06:39:38
回答 1查看 3.7K关注 0票数 1

以下是站点代码的片段

代码语言:javascript
复制
<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>

我试着解析它

代码语言:javascript
复制
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‘之外的所有类,所有其他类都会绘制其内容,但是

代码语言:javascript
复制
print element.find('a', {'class' : 'fn openPreview'}).string 

不打印

请帮助我,如何解析它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-24 06:55:34

如果According to the BeautifulSoup documentation有多个子级,则element.string将为None

在你的情况下,

代码语言:javascript
复制
print element.find('a', {'class' : 'fn openPreview'}).contents[0].string

将打印“酒店名称”。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5412558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档