如何使用xpath获取跨度的类名称

时间:2019-06-23 05:49:14

标签: python html xpath web-scraping web-crawler

我试图获取class类的第一个span的{​​{1}}名称。 在这种情况下,我想打印出“全明星40个主标题评分”。

我成功打印出了用户名,在这种情况下为“ lemon”。 但是我不知道如何访问班级名称并获得评分。

谢谢!

header

没有错误,但没有打印任何评级。

谢谢〜

2 个答案:

答案 0 :(得分:0)

您只需将@class添加到xpath:

rate = comment.xpath('//header/span[1]/@class')
print(rate)

请参见this example

希望这对您有帮助!

答案 1 :(得分:0)

我更喜欢css选择器并使用刚刚提取的类

ratings = [(item.select_one('.name').text, ' '.join(item.select_one('.main-title-rating')['class'])) for item in soup.select('.review-item')]

您可以使用split或re提取实际星数:

from bs4 import BeautifulSoup as bs
import requests
import re

r = requests.get('https://movie.douban.com/subject/1291561/?from=showing')
soup = bs(r.content, 'lxml')
ratings = [(item.select_one('.name').text, re.search(r'(\d)',item.select_one('.main-title-rating')['class'][0]).groups(0)[0] ) for item in soup.select('.review-item')]
print(ratings)