python 爬取网页数据 数据可能为空

问题描述

在爬取数据的时候,一条数据的某个字段不是必须存在的(即可以为空),所以,在前端页面显示的时候,标签可能是不存在的,下面代码中的 类名为"quote"的p标签再某条数据中是没有的。所以会出现根据类名爬取的话某个字段的个数和应有个数不匹配的问题,应该如何实现判断 如果该标签为空的话,存入空字符串?

代码

 <td valign="top"> 
    <div class="pl2">
       <a href="https://book.douban.com/subject/25985021/" onclick=&#34;moreurl(this,{i:&#39;22&#39;})&#34; title="人类简史" >人类简史
        <span style="font-size:12px;"> : 从动物到上帝 </span>
       </a>&nbsp; 
       <img src="https://img3.doubanio.com/pics/read.gif" alt="可试读" title="可试读"/>
       <br/>
       <span style="font-size:12px;">A brief history of humankind</span>
    </div>
    <p class="pl">[以色列] 尤瓦尔·赫拉利 / 林俊宏 / 中信出版社 / 2014-11 / 68.00元</p>
      <div class="star clearfix">
          <span class="allstar45"></span>
          <span class="rating_nums">9.1</span>
          <span class="pl">(157217人评价)</span>
      </div>
      <p class="quote" style="margin: 10px 0; color: #666">
         <span class="inq">跟着人类一同走过十万年</span>
      </p> 
</td>

感谢

请教大佬,万分感谢!!!!!

阅读 3.9k
1 个回答
 books = html.xpath('//tr[@class="item"]')
 quotes = []
    for l in books:
        quote = l.xpath('td[2]/p[@class="quote"]/span/text()')
        print(quote)
        print(len(quote))
        quotes.append(quote[0] if(len(quote) == 1) else " ")

通过取出所有类为item的tr为变量books,循环取出books第二个td标签下类名为 quote的p标签下的span标签的内容,定义列表,追加元素,追加元素时添加判断,若取出列表长度为0,则存入空,否则存入第一个列表元素

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进