gpt4 book ai didi

python - 如何解析格式化的 div 值的最大数量? BS4

转载 作者:行者123 更新时间:2023-12-04 09:29:30 24 4
gpt4 key购买 nike

我想为一个使用伪表 View 应用程序的网站创建一个解析器。问题是如何解析cid以特定方式格式化。cid有两个格式化的变量 R (row)C (column) .例如 cid="R1C1"表示数据中的第 1 行和第 1 列。我想获得行的最大值。所以在本例中为 99。
数据示例

<div align="center" ccnt="1" cid="R1C1"><div rid="v"><span rv="1">1</span></div></div>
<div align="center" ccnt="1" cid="R1C2"><div rid="v"><span rv="1970">1970</span></div></div>
<div ccnt="1" cid="R1C3"><div rid="v">No Name</div></div>
<div ccnt="1" cid="R1C4"><div rid="v">New York</div></div>

...

<div align="center" ccnt="1" cid="R99C1"><div rid="v"><span rv="99">99</span></div></div>
<div align="center" ccnt="1" cid="R99C2"><div rid="v"><span rv="2020">2020</span></div></div>
<div ccnt="1" cid="R99C3"><div rid="v">No Name</div></div>
<div ccnt="1" cid="R99C4"><div rid="v">Iraq</div></div>
我不知道如何处理。我可以使用列表理解来剥离和解析所有数字值并将它们写在列表中,然后获取列表的最大值,但在这种情况下它不起作用。数据中有很多外部数字。

最佳答案

您可以使用 soup.find_all()cid= 中使用自定义正则表达式参数,然后将其与 max() 结合使用功能。
例如:

import re
from bs4 import BeautifulSoup


txt = '''<div align="center" ccnt="1" cid="R1C1"><div rid="v"><span rv="1">1</span></div></div>
<div align="center" ccnt="1" cid="R1C2"><div rid="v"><span rv="1970">1970</span></div></div>
<div ccnt="1" cid="R1C3"><div rid="v">No Name</div></div>
<div ccnt="1" cid="R1C4"><div rid="v">New York</div></div>

<div align="center" ccnt="1" cid="R99C1"><div rid="v"><span rv="99">99</span></div></div>
<div align="center" ccnt="1" cid="R99C2"><div rid="v"><span rv="2020">2020</span></div></div>
<div ccnt="1" cid="R99C3"><div rid="v">No Name</div></div>
<div ccnt="1" cid="R99C4"><div rid="v">Iraq</div></div>'''


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

r = re.compile(r'R(\d+)C\d+')
max_row = max(int(r.search(div['cid']).group(1)) for div in soup.find_all(cid=r))
print(max_row)
打印:
99

关于python - 如何解析格式化的 div 值的最大数量? BS4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62903513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com