Danielgard
Danielgard

Reputation: 55

Python Beautifulsoup Scrapping a class in span

Im trying to scrape the rating of a course in udemy. For example: https://www.udemy.com/course/the-modern-cpp-20-masterclass/ Sadly, I am getting a syntax error in my find line. Waiting for you help :)

import time      
import os         
import bs4
from bs4 import BeautifulSoup  
import pandas as pd
import scipy as sc
import numpy as np
import requests
url = "https://www.udemy.com/course/the-modern-cpp-20-masterclass/"
page = requests.get(url)
soup = BeautifulSoup(page.content,'html.parser')


#<span class="udlite-heading-sm star-rating--rating-number--2o8YM" aria-hidden="true" data-purpose="rating-number">4.7</span>course_rating_avarage = soup.find('div', {"class" : udlite-sr-only})
course_rating_avarage = soup.find('span', {"class" : udlite-heading-sm star-rating--rating-number--2o8YM})
course_rating_avarage_text = course_rating_avarage.string
print (course_rating_avarage_text)

Upvotes: 0

Views: 59

Answers (2)

Danielgard
Danielgard

Reputation: 55

So, I fixed it by edditing the course_rating_avarage field:

course_rating_avarage = soup.find('span', {"class" : 'udlite-heading-sm star-rating--rating-number--2o8YM'})

Upvotes: 1

CodeMonkey
CodeMonkey

Reputation: 23738

The argument in soup.find() must be quoted as a string.

import bs4
from bs4 import BeautifulSoup  
import requests

url = "https://www.udemy.com/course/the-modern-cpp-20-masterclass/"
page = requests.get(url)
soup = BeautifulSoup(page.content,'html.parser')

course_rating_avarage = soup.find('span', {"class" : "udlite-heading-sm star-rating--rating-number--2o8YM"})
#                                                    ^ quote the value above
course_rating_avarage_text = course_rating_avarage.string
print (course_rating_avarage_text)

Output:

4.7

Class types can change over time so it would be better to look for the 'rating-number' value in the data-purpose attribute.

course_rating_avarage = soup.find('span', {"data-purpose" : "rating-number"})

Upvotes: 1

Related Questions