ошибка BeautifulSoup find_all?

В настоящее время я использую красивый суп для анализа html-страницы. Но иногда результат, который я получил с помощью find_all, меньше, чем количество страниц. Например, эта страница http://www.totallyfreestuff.com/index.asp?m=0&sb=1&p=5 содержит 18 заголовков. Но когда я использую следующие коды, их всего два! Может ли кто-нибудь сказать мне, почему. Заранее спасибо!

soup = BeautifulSoup(page, 'html.parser')
hrefDivList = soup.find_all("span", class_ = "headline")
#print hrefDivList
print len(hrefDivList)

person Keang1013    schedule 11.02.2015    source источник
comment
как вы получили page? ваш код печатает 18 в моем случае.   -  person salmanwahed    schedule 11.02.2015
comment
Я получаю страницу с помощью urllib и распечатываю страницу. он имеет 18 заголовков на странице. Но мои коды только что получили два. Можете ли вы поделиться своими кодами со мной?   -  person Keang1013    schedule 11.02.2015


Ответы (2)


Вы можете попробовать использовать другой парсер для Beautifulsoup.

import requests
from bs4 import BeautifulSoup

url = "<your url>"
r = requests.get(url)

soup = BeautifulSoup(r.content, 'lxml')
hrefDivList = soup.find_all("span", attrs={"class": "headline"})
print len(hrefDivList)
person salmanwahed    schedule 11.02.2015

Вы можете попробовать селекторы CSS, чтобы облегчить себе жизнь

hrefDivList = soup.select("span.headline")
#print hrefDivList
print len(hrefDivList)

Или вы можете напрямую перебирать каждый текст Span

for every_span in soup.select("span.headline"):
    print(every_span.text)
person Umair Ayub    schedule 11.02.2015