gpt4 book ai didi

python - BeautifulSoup 错误地解析表

转载 作者:行者123 更新时间:2023-12-01 03:32:15 28 4
gpt4 key购买 nike

无法让 Beautiful Soup 正确处理大型篮球比赛数据表。代码:

import urllib.request
from bs4 import BeautifulSoup

request = urllib.request.Request('http://www.basketball-reference.com/boxscores/pbp/201611220LAL.html')
result = urllib.request.urlopen(request)
resulttext = result.read()
soup = BeautifulSoup(resulttext, "html.parser")

pbpTable = soup.find('table', id="pbp")

如果您自己运行此示例,您会发现该表未完全解析 - 我们得到的只是:

<table class="suppress_all sortable stats_table" data-cols-to-freeze="1" id="pbp">
<caption>Play-By-Play Table</caption>
<tr class="thead" id="q1">
<th colspan="6">1st Q</th></tr></table>

问题在于解析本身打印 soup 变量给出(除其他外)

</div>
<div class="table_wrapper" id="all_pbp">
<div class="section_heading">
<span class="section_anchor" data-label="Play-By-Play" id="pbp_link"></span>
<h2>Play-By-Play</h2> <div class="section_heading_text">
<ul> <li>  Jump to: <a href="#q1">1st</a> | <a href="#q2">2nd</a> | <a href="#q3">3rd</a> | <a href="#q4">4th</a> <br> <span class="bbr-play-score key">scoring play</span> <span class="bbr-play-tie key">tie</span> <span class="bbr-play-leadchange key">lead change</span></br></li>
</ul>
</div>
</div> <div class="table_outer_container">
<div class="overthrow table_container" id="div_pbp">
<table class="suppress_all sortable stats_table" data-cols-to-freeze="1" id="pbp"><caption>Play-By-Play Table</caption><tr class="thead" id="q1">
<th colspan="6">1st Q</th></tr></table></div></div></div></div></div></body></html>

最重要的是,/table 标签突然出现。查看相关链接的页面源代码,我们可以看到该表并未关闭 - 它会持续一段时间。除了实现我自己的 HTML 解析代码之外,还有其他解决办法吗?

最佳答案

中使用 “lxml”“html5lib”而不是 “html.parser”
soup = BeautifulSoup(resulttext, "lxml")` 

然后您会获得更多数据。

但是,如果您还没有安装 lxmlhtml5lib,则可能需要安装。

pip install lxml

pip install html5lib

lxml 可能需要 C/C++ 编译器、libxml 库(Windows 上为 libxml.dll)等。

关于python - BeautifulSoup 错误地解析表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40780290/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com