Sto cercando di rasentare nature.com per eseguire alcune analisi sugli articoli di giornale. Quando eseguo il seguente:Beautifulsoup Can not Find All
import requests
from bs4 import BeautifulSoup
import re
query = "http://www.nature.com/search?journal=nature&order=date_desc"
for page in range (1, 10):
req = requests.get(query + "&page=" + str(page))
soup = BeautifulSoup(req.text)
cards = soup.findAll("li", "mb20 card cleared")
matches = re.findall('mb20 card cleared', req.text)
print(len(cards), len(matches))
mi aspetto BeautifulSoup per stampare "25" (il numero di risultati di ricerca) per 10 volte (una per ogni pagina), ma non è così. Invece, esso stampa:
14, 25
12, 25
25, 25
15, 25
15, 25
17, 25
17, 25
15, 25
14, 25
Guardando il sorgente html mostra che ci dovrebbe essere 25 risultati restituiti per pagina, ma BeautifulSoup sembra essere confuso qui e non posso capire perché.
Update 1 Nel caso in cui è importante, sto correndo su Mac OSX Mavericks usando Anaconda Python 2.7.10 e BS4 versione 4.3.1
Update 2 ho aggiunto una regex per dimostrare che req. il testo contiene effettivamente quello che sto cercando ma beautifulsoup non lo trova
Aggiornamento 3 Quando eseguo questo semplice script più volte, a volte ottengo un "Errore di segmentazione: 11". Non so perché
Funziona per me non trovi il '()' 'per print' se il pitone è 3.x – styvane
@ Michael: Quando si esegue questo codice, stampa "25" 10 volte di fila ?? Ottengo 14,12,25,15,15,17,17,15,14. – slaw
sì '25' 10 volte. avviare un nuovo interprete Python ed eseguire nuovamente il codice per vedere – styvane