BS4 抓取 Python 获取内容,直到特定的类名



我想抓取这个网站 https://www.eduvision.edu.pk/institutions-detail.php?city=51I&institute=5_allama-iqbal-open-university-islamabad 我只想要这个 url 中的学士数据,该数据位于类名 = academicsList 下,我不想要下面的 MS(MASTERS( 数据。 我希望我的刮板在毫秒数据之前停止。我的逻辑是,我们可以在class=academicshead上设置临时增量器,当它得到第二个academicshead时,它应该停止

import requests
from bs4 import BeautifulSoup
from fake_useragent import  UserAgent
ua          = UserAgent()
header      = {'user-agent':ua.chrome}
response   = requests.get('https://www.eduvision.edu.pk/institutions-detail.php?city=51I&institute=5_allama-iqbal-open-university-islamabad',headers=header)
soup = BeautifulSoup(response.content, 'html.parser')
disciplines = soup.findAll("ul", {"class": "academicsList"})
#temp = soup.findAll("ul",{"class":"academicsHead"})
#stop at second academicsHead
for d in disciplines:
print(d.findAll('li')[0].text)

我们可以检查该类是否为"academicsHead",如果不是中断循环,则只是检查文本是否为学士。 这样的东西会起作用:

disciplines = soup.findAll('ul',attrs={'class':re.compile(r'academics+(.)+')})
for i in disciplines:
if i['class'][0] == 'academicsHead':
if i.find('li').text.strip() != 'BACHELOR':
break
else:
print(i.find('li').text.strip())

最新更新