Tags 用靓汤榨取少量价值

Tags 用靓汤榨取少量价值,tags,beautifulsoup,Tags,Beautifulsoup,我认为这不是一个正确的方法。代码应该如何提取“教师”和“学生”标记下的名称 假设您的HTML块在解析其他页面时不会有太大变化,您可以按类查找p标记(您的示例没有),并验证教师文本是否存在 如果是,则从元素上第一个a的p标记获取.contents[1] 接下来查找href属性与您的教师不匹配的所有a标记 例如: <a href="/name/nm12345/?ref_=adv_0" >Scott</a> 从bs4导入美化组 示例=“” 老师: | 学生: , , ,

我认为这不是一个正确的方法。代码应该如何提取“教师”和“学生”标记下的名称

假设您的HTML块在解析其他页面时不会有太大变化,您可以按类查找
p
标记(您的示例没有),并验证
教师
文本是否存在

如果是,则从元素上第一个
a
的p标记获取
.contents[1]

接下来查找
href
属性与您的教师不匹配的所有
a
标记

例如:

<a href="/name/nm12345/?ref_=adv_0"
>Scott</a>
从bs4导入美化组
示例=“”

老师: | 学生: , , ,

“”“ soup=BeautifulSoup(例如,“html.parser”) 教室=soup.find(x.get_text()中的lambda x:“教师”) 如果教室不是无: 教师=教室。内容[1] 教师URL=教师[“href”] 学生=教室。查找所有(lambda标记:tag.has_attr('href')和教师URL不在标记[“href”]) 打印(教师文本) 对于学生中的学生: 打印(学生文本)
哪些产出:

斯科特

本尼迪克特

奇韦特尔

雷切尔

黄本笃

<a href="/name/nm12345/?ref_=adv_0"
>Scott</a>
from bs4 import BeautifulSoup

example = """<p class="">
Teacher:
<a href="/name/nm12345/?ref_=adv_0"
>Scott</a>
         <span class="ghost">|</span> 
Students:
<a href="/name/nm12345/?ref_=adv_1"
>Benedict</a>, 
<a href="/name/nm12345/?ref_=adv_2"
>Chiwetel</a>, 
<a href="/name/nm12345/?ref_=adv_3"
>Rachel</a>, 
<a href="/name/nm12345/?ref_=adv_4"
>Benedict Wong</a>
</p>"""

soup = BeautifulSoup(example, "html.parser")

Classroom = soup.find(lambda x: "Teacher" in x.get_text())

if Classroom is not None:

    Teacher = Classroom.contents[1]
    TeacherUrl = Teacher["href"]

    Students = Classroom.find_all(lambda tag: tag.has_attr('href') and TeacherUrl not in tag["href"])

    print (Teacher.text)
    for Student in Students:
        print (Student.text)