2015-02-11 2 views
1

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

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

как вы получить 'page'? ваш код печатает 18 в моем случае. –

+0

Я получаю страницу с помощью urllib, и я распечатал страницу. на странице было 18 заголовков. Но у моих кодов было всего два. Можете ли вы поделиться со мной кодами? – Keang1013

+0

проверить ответ. –

ответ

1

Вы можете попробовать использовать различный парсер для 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) 
0

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

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

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

for every_span in soup.select("span.headline"): 
    print(every_span.text) 
Смежные вопросы