bs4 抓取 python 获取内容直到特定 class 名称
bs4 scraping python get contents until specific class name
我想抓取这个网站
https://www.eduvision.edu.pk/institutions-detail.php?city=51I&institute=5_allama-iqbal-open-university-islamabad
我只想要这个 url 中的学士数据,它位于 class name=academicsList 下,我不想要低于 MS(MASTERS) 的数据。
我希望我的抓取工具在 ms 数据之前停止。我的逻辑是,我们可以在 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)
我们可以检查 class 是否为 '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())
我想抓取这个网站 https://www.eduvision.edu.pk/institutions-detail.php?city=51I&institute=5_allama-iqbal-open-university-islamabad 我只想要这个 url 中的学士数据,它位于 class name=academicsList 下,我不想要低于 MS(MASTERS) 的数据。 我希望我的抓取工具在 ms 数据之前停止。我的逻辑是,我们可以在 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)
我们可以检查 class 是否为 '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())