我一直在通过 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] 删除。
我来说两句