import requests
from bs4 import BeautifulSoup
r = requests.get("https://www.udacity.com/courses/all")
soup = BeautifulSoup(r.text)
summaries = soup.find_all("li",class_="") #using "card-list_catalogCardListItem__aUQtx" for class_ resulted in 0 case
print('Number of Courses:',len(summaries)) #this finds 225 case
summaries[7].select_one("li").get_text().strip() #output: 'AI for Business Leaders'
summaries[7].select_one("a").get_text().strip() #output:'Artificial Intelligence'
courses = []
for summary in summaries:
title = summary.select_one("a").get_text().strip()
school = summary.select_one("li").get_text().strip()
courses.append((title,school))
#to get all the summaries text extraction will result in "AttributeError: 'NoneType' object has no attribute 'get_text'"
出于教育目的,为了提取
1)所有优达学城课程 2)在什么学校 3)简短说明
我尝试使用“find_all
”来使用上述代码。我的手动搜索表明页面上有 264 门课程。我最初使用了 'find_all("li",class_="card-list_catalogCardListItem__aUQtx")
' 标签,结果为 0。当我将 class_
留空时,最接近的数字是 225,只是为了测试。但是,当我打算使用“for 循环”来提取所有课程时,这最终会导致 AttributeError
。这可能是因为并非所有找到的摘要都是可读的“'NoneType' object has no attribute 'get_text'
”。
我的问题:我怎样才能做到这一点? (因为 find_all
标签发现似乎失败)