bs4抓python获取内容直到特定的类名

问题描述 投票:0回答:1

我想抓住这个网站https://www.eduvision.edu.pk/institutions-detail.php?city=51I&institute=5_allama-iqbal-open-university-islamabad,我只想要这个网址中的单身汉数据,这是在类名= academicsList下,我不想要下面的MS(MASTERS)数据。我希望我的刮刀在ms数据之前停止。我的逻辑是我们可以在class = 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)
python class beautifulsoup screen-scraping
1个回答
0
投票

我们可以检查这个类是否是'academicsHead',如果没有打破循环,只检查文本是否是BACHELOR。像这样的东西会起作用:

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())
© www.soinside.com 2019 - 2024. All rights reserved.