Beautifuresoup Find_all限于50个结果



我正在尝试使用Beautifutsoup从页面获取结果:

req_url = 'http://www.xscores.com/soccer/livescores/25-02'
request = requests.get(req_url)
content = request.content
soup = BeautifulSoup(content, "html.parser")
scores = soup.find_all('tr', {'style': 'height:18px;'}, limit=None)
print(len(scores))
>50

我读过以前的解决方案:美丽的汤findall找不到所有我尝试了html.parser,lxml和html5lib,但它们都没有返回50多个结果。有任何建议吗?

尝试使用css-selector查询。

scores = soup.select('#scoretable > tr[style*="height:18px;"]')
print(len(scores))
>>>613

尝试这个 -

req_url = 'http://www.xscores.com/soccer/livescores/25-02'
request = requests.get(req_url)
html=request.text
soup = BeautifulSoup(html, "html5lib")
scoretable=soup.find('tbody',id='scoretable')
scores=scoretable.find_all('tr')
len(scores)
>617

此行只能找到'高度:18px;风格。

scores = soup.find_all('tr', {'style': 'height:18px;'}, limit=None)

如果您查看页面源并搜索"height:18px;",您将看到50个匹配项。但是,如果您在没有报价的情况下搜索height:18px;,您将看到613匹匹配。

您需要编辑该行才能找到具有高度的行:18px;样式(和其他值)。您可以根据文档作为样式参数将正则参数传递,也许是这样的东西:

soup.find_all('tr', style = re.compile('height:18px'), limit=None)

最新更新