【问题标题】:bs4 scraping python get contents until specific class namebs4抓取python获取内容直到特定的类名
【发布时间】:2018-09-05 11:50:04
【问题描述】:

我想抓取这个网站 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)

【问题讨论】:

    标签: python class beautifulsoup screen-scraping


    【解决方案1】:

    我们可以检查该类是否为“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())
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2023-02-22
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多