访问 HTML 注释中的标签

卢克·比安库利

我一直在通过 BS4 熟悉使用 Python 进行网络抓取。我一直无法找到嵌入在注释中的 DOM 标签的解决方案。例如,当尝试从 .html 页面 ( https://www.basketball-reference.com/teams/GSW/2018/lineups/ )获取数据时,检查页面上的表格会显示:

<div class='table_outer_container"> ... </div>

我通常可以使用 BeautifulSoup 获取。但是,当我查看实际的页面源时,该表包含在注释标签中:

<!--

<div class='table_outer_container"> ... </div>

-->

我一直无法找到通过 BS4 访问它的方法。有没有解决的办法?

谢谢。

诺亚·约翰逊

您可以在将 html 输入 bs4 之前删除注释标签。

确保我们有用于替换函数的正确字符串

import requests
page = requests.get("https://www.basketball-reference.com/teams/GSW/2018/lineups/")
print(page.text.count("""<!--\n   <div class="table_outer_container">"""),page.text.count("""</div>\n-->"""))
# out: 8 8

替换字符串

no_open_tag = page.text.replace("""<!--\n   <div class="table_outer_container">""","""<div class="table_outer_container">""")
no_close_tag = no_open_tag.replace("""</div>\n-->""","</div>")
print(no_close_tag.count("""<!--\n   <div class="table_outer_container">"""),no_close_tag.count("""</div>\n-->"""))
# out: 0 0

送入 bs4

from bs4 import BeautifulSoup
soup = BeautifulSoup(no_close_tag, "html5lib")
print(len(soup.findAll("div", {"class":"table_outer_container"})))
# out: 8

我们现在可以解析所有 8 个注释的 div。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章