我正在尝试使用Python将评论的详细信息从here划分为CSV。每部电影都有一个星级,由图像表示,有一个类('icon-star-fill'或'icon-star-half')。我正在尝试编写一个函数来分配一个数值。
我到目前为止的代码是返回一个bs4.element.ResultSet,每个元素都有一个Tag
[<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,None]
答案 0 :(得分: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',
...
]