BeautifulSoup find_all限制为50个结果?

时间:2017-02-27 09:21:29

标签: python beautifulsoup lxml html5lib

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

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

我读了之前的解决方案:Beautiful Soup findAll doen't find them all 我尝试了html.parser,lxml和html5lib,但没有一个返回超过50个结果。有什么建议吗?

谢谢

3 个答案:

答案 0 :(得分:2)

试试这个 -

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

答案 1 :(得分:1)

尝试使用css-selector查询。

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

>>>613

答案 2 :(得分:1)

此行只能找到行 ' height:18px;样式。

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

如果您查看页面来源并搜索"height:18px;",您会看到50个匹配项。但如果您在没有引号的情况下搜索height:18px;,则会看到613个匹配。

您需要修改该行以查找 高度:18px的行;风格(和其他价值观)。 您可以根据documentations将正则表达式作为样式参数传递,可能是这样的:

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