BeautifulSoup find_all ограничен 50 результатами?

Я пытаюсь получить результаты со страницы, используя 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 не нашел их всех, и я попробовал html.parser, lxml и html5lib, но ни один из них не дал более 50 результатов. Какие-либо предложения?

Спасибо

3 ответа

Решение

Попробуйте использовать 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)
Другие вопросы по тегам