【问题标题】:Extract sub division text of a site using Python使用 Python 提取站点的细分文本
【发布时间】:2014-10-19 10:12:51
【问题描述】:

我一直在提取 li 标签之间的文本。以下是部分html页面源代码

<div class="item_desc_text">
    <ul class="fk-key-features">
      <li>1.2 GHz Qualcomm Snapdragon 400 Quad Core Processor and 1 GB RAM</li><li>Android v4.4 (KitKat) OS</li>
      <li>Wi-Fi Enabled</li><li>8 GB Internal Memory</li><li>Dual SIM (GSM + GSM)</li><li>HD Recording</li>
      <li>5 MP Primary Camera and 1.3 MP Secondary Camera</li><li>4.5-inch HD Display</li>
    </ul>
</div>

我使用以下代码提取输出

import bs4
import re
suburl="http://www.flipkart.com/moto-g/p/itmdsmbxcrm9wy8r?pid=MOBDSGU2ZMDYENQA&icmpid=reco_pp_hSame_mobile_1"
subhtml = urllib2.urlopen(suburl)
subhtml = subhtml.read()
subhtml = re.sub(r'\s\s+','',subhtml)
subsoup=bs4.BeautifulSoup(subhtml)
print "Key features of "+Name.get_text()
    for res2 in subsoup.findAll('div',attrs={'class':'item_desc_text'}):   
        print res2

我该怎么办?

【问题讨论】:

    标签: python html tags beautifulsoup web-crawler


    【解决方案1】:

    这是一种方法:

    >>> from bs4 import BeautifulSoup as bs
    >>> data = '''
    ... <div class="item_desc_text">
    ...     <ul class="fk-key-features">
    ...       <li>1.2 GHz Qualcomm Snapdragon 400 Quad Core Processor and 1 GB RAM</li><li>Android v4.4 (KitKat) OS</li>
    ...       <li>Wi-Fi Enabled</li><li>8 GB Internal Memory</li><li>Dual SIM (GSM + GSM)</li><li>HD Recording</li>
    ...       <li>5 MP Primary Camera and 1.3 MP Secondary Camera</li><li>4.5-inch HD Display</li>
    ...     </ul>
    ... </div>
    ... '''
    >>> soup = bs(data)
    >>> ul = soup.find('ul', attrs={'class':'fk-key-features'})
    >>> for item in ul.find_all('li'):
    ...     print item.get_text().strip()
    ...
    1.2 GHz Qualcomm Snapdragon 400 Quad Core Processor and 1 GB RAM
    Android v4.4 (KitKat) OS
    Wi-Fi Enabled
    8 GB Internal Memory
    Dual SIM (GSM + GSM)
    HD Recording
    5 MP Primary Camera and 1.3 MP Secondary Camera
    4.5-inch HD Display
    

    【讨论】:

    • 您提供的解决方案是 k ,但是当整个页面加载时,它不会在 li 标签之间返回正确的文本,因为网站中有很多 ul 标签。我已经更新了问题,请再次检查
    • @user3455672 你必须选择你想要的ul。更新了答案以选择 ulfk-key-features
    • 对于 ul.find_all('li') 中的项目:AttributeError: 'NoneType' object has no attribute 'find_all'
    猜你喜欢
    • 2018-04-13
    • 2017-09-15
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    相关资源
    最近更新 更多