我正在尝试抓取此页面上的表格。我可以从浏览器调试器中看到我想要的表格在 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>
添加回答
举报
0/150
提交
取消
