美丽的汤4:从类中获取某些属性

时间:2017-12-14 05:41:28

标签: python-3.x beautifulsoup

我提前为术语中的任何错误道歉。我对HTML只有非常基本的知识,所以我不能保证我会正确引用所有内容。

无论如何,我正在用Python编写一个程序来自动为我上课的学生上传成绩。在我上传成绩的网站上,每个学生都有输入插槽,相关的HTML如下所示:

<div class="input text">
<label for="Grade0Value">Student Name</label>
<input name="data[Grade][0][value]" type="text" maxlength="11" value="10" 
id="Grade0Value"></div>

到目前为止,我已经设法获得了我需要的一些信息:

ids = []
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
for student in soup.find_all('label'):
    ids.append(student)

返回:

[<label for="Grade0Value">Student Name</label>, . . . ]

由此,我需要两件事:学生的名字('学生姓名'),我使用

student.string

和“Grade0Value”。这是我无法弄清楚的。什么'属性'(如果这是正确的词)我需要为每个学生返回id(它标记为'label for =')吗?我可以使用与以前获得学生姓名相似的方法吗?

1 个答案:

答案 0 :(得分:0)

from bs4 import BeautifulSoup


html_doc = """
<div class="input text">
<label for="Grade0Value">Student Name</label>
<input name="data[Grade][0][value]" type="text" maxlength="11" value="10" 
id="Grade0Value"></div>
"""

soup = BeautifulSoup(html_doc, "html.parser")
ids = []
label_fors = []

for student in soup.find_all('label'):
    ids.append(student.text)
    label_fors.append(student.get('for'))

print(ids)
print(label_fors)

此代码将返回

['Student Name']
['Grade0Value']