我正在尝试使用python来抓取TripAdvisor并从特定范围中提取文本---&gt; <span>138<span>
(没有优秀的)
<label for="taplc_prodp13n_hr_sur_review_filter_controls_0_filterRating_5">
<div class="row_label">Excellent</div>
<span class="row_bar">
<span class="row_fill" style="width:65%;"></span>
</span>
<span>138<span>
</span></span></label>
到目前为止,这是我的代码:
for rating_all in moresoup.findAll('div',{'class':'col rating '}):
for record in rating_all.findAll('li'):
for rate1 in record.findAll('label',{'for':"taplc_prodp13n_hr_sur_review_filter_controls_0_filterRating_1"}):
print(rate1.find('div',{'class':"row_label"}).text + ",\t")
print(rate1.findAll('span'))
我尝试使用下标,但它不会让我。当我在跨度后使用.text时,它表示没有文本,当我将其更改为查找而不是查找全部时,它只找到第一个跨度。
答案 0 :(得分:0)
findAll
(或更常见的find_all
- 它做同样的事情)会返回与您的过滤器匹配的所有Tag
个对象的列表。即使只有一个匹配Tag
,您仍会获得一个项目列表:[Tag]
。
获得标签列表后,您可以通过索引获得单个标签,例如:
soup.find_all('span')[0]
您可以使用.text
属性获取一个标签的文字:
soup.find_all('span')[0].text
在您的特定情况下,我能够使用以下内容获取文本'138\n'
rate1.findAll('span')[2].text