【问题标题】:Convert a BeautifulSoup ResultSet into a list of strings将 BeautifulSoup ResultSet 转换为字符串列表
【发布时间】:2018-07-24 22:48:18
【问题描述】:

我正在尝试使用 Python 将评论的详细信息从 here 抓取到 CSV 中。每部电影都有一个星级评分,由一张图片表示,有一个类('icon-star-fill' 或 'icon-star-half')。我正在尝试编写一个函数来分配一个数值。

我目前的代码是返回一个 bs4.element.ResultSet,每个元素都有一个标签

    [<i class="icon-star-full"></i>, <i class="icon-star-full"></i>]

我想把它转换成一个字符串列表,比如

    ["<i class="icon-star-full"></i>", "<i class="icon-star-full"></i>"]

我尝试了 soup_obj.text、soup_obj.content,但它们返回的是空字符串。

这是我的代码

    from bs4 import BeautifulSoup
    import requests
    result = requests.get(url='http://www.rogerebert.com/reviews')
    result_content = result.content
    soup_obj = BeautifulSoup(result_content, 'html5lib')
    wrapper_class = soup_obj.find('div', id='review-list')
    for x in wrapper_class.find_all('figure'):
        convoluted_rating = x.find('span', class_='star-rating').find_all('i')
        print convoluted_rating

我见过this,它返回一个没有的数组,就像这样

    [None,None]

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    您可以遍历ResultSet 并调用tag.prettify

    tags = [] 
    for x in wrapper_class.find_all('figure'):
        tags.extend(
             (i.prettify() for i in x.find('span', class_='star-rating').find_all('i'))
        )
    

    print(tags)
    
    ['<i class="icon-star-full">\n</i>\n',
     '<i class="icon-star-full">\n</i>',
     '<i class="icon-star-full">\n</i>\n',
     ...
    ]
    

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多