为了账号安全,请及时绑定邮箱和手机立即绑定

BeautifulSoup 没有解析完整的 HTML - 这是因为动态 HTML 吗?

BeautifulSoup 没有解析完整的 HTML - 这是因为动态 HTML 吗?

米脂 2021-10-12 15:30:03
我正在尝试抓取此页面上的表格。我可以从浏览器调试器中看到我想要的表格在 HTML 中。例如,您可以看到肽名称:我写了这段代码来提取这个表:for i in range(1001,1003):#    try:        res = requests.get("https://webs.iiitd.edu.in/raghava/antitbpdb/display.php?details=" + str(i))        soup = BeautifulSoup(res.content, 'html.parser')        table = soup.find_all('table')        print table 但是打印的输出是:[<table bgcolor="#DAD5BF" border="1" cellpadding="5" width="970"><tr><td align="center">\n\t      This page displays user query in tabular form.\n</td></tr>\n</table>, <table width="970px"><tr><td align="center"><br/><font color="black" size="5px">1001  details</font><br/></td></tr></table>]有人可以解释为什么 find_all 没有找到所有表(特别是我想要的表)以及我如何解决这个问题?
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

仅供参考(如果您想知道问题的根本原因)目标的table标记无效:


<table class ="tab" cellpadding= "5" ... STYLE="border-spacing: 0px;border-style: line ;

 <tr bgcolor="#DAD5BF"></tr>

请注意,起始标记未关闭:(<table ...应该是<table ...>)并且祖先也是,<div>而结束标记是</p>


这就是为什么 BeautifulSoup 不将其识别为 a 的原因table,因此它不会被返回soup.find_all('table')


但是,现代浏览器具有内置工具来“修复”损坏的标签,因此在浏览器table中看起来并不“损坏”:关闭</div>添加到祖先,div而p标签转换为空节点<p></p>


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号