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

我正在尝试抓取页面上的表格。

我可以从浏览器调试器中看到我想要的表格在 HTML 中。例如,您可以看到肽名称:

http://img2.mukewang.com/6165398f000123e806800555.jpg

我写了这段代码来提取这个表:


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 没有找到所有表(特别是我想要的表)以及我如何解决这个问题?


米脂
浏览 246回答 2
2回答

湖上湖

仅供参考(如果您想知道问题的根本原因)目标的table标记无效:<table class ="tab" cellpadding= "5" ... STYLE="border-spacing: 0px;border-style: line ;&nbsp;<tr bgcolor="#DAD5BF"></tr>请注意,起始标记未关闭:(<table ...应该是<table ...>)并且祖先也是,<div>而结束标记是</p>这就是为什么 BeautifulSoup 不将其识别为 a 的原因table,因此它不会被返回soup.find_all('table')但是,现代浏览器具有内置工具来“修复”损坏的标签,因此在浏览器table中看起来并不“损坏”:关闭</div>添加到祖先,div而p标签转换为空节点<p></p>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python