Python 我正在寻找解析html代码的最佳方法

Python 我正在寻找解析html代码的最佳方法,python,html,python-3.x,parsing,beautifulsoup,Python,Html,Python 3.x,Parsing,Beautifulsoup,我正在写一份入学申请书。它的任务是读取subject名称和div类名。类名与您是否在场不同。 最后,我要总结一整年每个学校科目的出勤率 代码来自一天。一年中的每一天我都要这样做。然后总结成百分比 我试着用BeautyfulSoup,但这是一项非常乏味的工作 例如: 'przedmiot obecnosc_3'-学生未出席课堂 'przedmiot obecnosc_0'-学生在课堂上 '2jęz。obcy/jęz。niemiecki'-学校科目名称 30 - 如果html\u data是您问题

我正在写一份入学申请书。它的任务是读取subject名称和div类名。类名与您是否在场不同。 最后,我要总结一整年每个学校科目的出勤率

代码来自一天。一年中的每一天我都要这样做。然后总结成百分比

我试着用BeautyfulSoup,但这是一项非常乏味的工作

例如: 'przedmiot obecnosc_3'-学生未出席课堂

'przedmiot obecnosc_0'-学生在课堂上

'2jęz。obcy/jęz。niemiecki'-学校科目名称


30
-

如果
html\u data
是您问题中的代码片段,您可以执行以下操作:

这将创建
主题
字典,其中键是主题名称,值是带有两个值的列表-第一个值是学生在场时的小时数,第二个值是学生缺席时的小时数:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_data, 'html.parser')

subjects = {}
for subject in soup.select('[class*="obecnosc_"]'):
    not_present = 'obecnosc_3' in subject.attrs['class']
    subjects.setdefault(subject.get_text(strip=True), [0, 0])[not_present] += 1

from pprint import pprint
pprint(subjects)
印刷品:

{'2 - 2 jęz. obcy/jęz. niemiecki': [0, 1],
 '3 - matematyka rozszerzona': [1, 0],
 '4 - matematyka rozszerzona': [1, 0],
 '5 - wychowanie fizyczne': [1, 0],
 '6 - wychowanie fizyczne': [1, 0],
 '7 - 1 jęz. obcy/jęz. angielski': [1, 0],
 '8 - informatyka rozszerzona': [1, 0]}

在Python中,Beautiful Soup通常是解析HTML的最佳方法。在以程序员友好的方式分析HTML时,
Beautiful Soup
通常是首选库。我的意思是,您可以尝试
lxml
html.parser
,但这可能会让工作更乏味!我欠你一杯啤酒!
{'2 - 2 jęz. obcy/jęz. niemiecki': [0, 1],
 '3 - matematyka rozszerzona': [1, 0],
 '4 - matematyka rozszerzona': [1, 0],
 '5 - wychowanie fizyczne': [1, 0],
 '6 - wychowanie fizyczne': [1, 0],
 '7 - 1 jęz. obcy/jęz. angielski': [1, 0],
 '8 - informatyka rozszerzona': [1, 0]}