J'essaie d'analyser un site Web et d'obtenir des informations avec BeautifulSoup.findAll mais il ne les trouve pas tous .. J'utilise python3
le code est-ce
#!/usr/bin/python3
from bs4 import BeautifulSoup
from urllib.request import urlopen
page = urlopen ("http://mangafox.me/directory/")
# print (page.read ())
soup = BeautifulSoup (page.read ())
manga_img = soup.findAll ('a', {'class' : 'manga_img'}, limit=None)
for manga in manga_img:
print (manga['href'])
il n'en imprime que la moitié ...
Différents analyseurs HTML traitent différemment le HTML cassé. Cette page sert du HTML cassé, et l'analyseur lxml
ne le gère pas très bien:
>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://mangafox.me/directory/')
>>> soup = BeautifulSoup(r.content, 'lxml')
>>> len(soup.find_all('a', class_='manga_img'))
18
La bibliothèque standard html.parser
a moins de problèmes avec cette page spécifique:
>>> soup = BeautifulSoup(r.content, 'html.parser')
>>> len(soup.find_all('a', class_='manga_img'))
44
En traduisant cela dans votre exemple de code spécifique en utilisant urllib
, vous spécifieriez l'analyseur ainsi:
soup = BeautifulSoup(page, 'html.parser') # BeatifulSoup can do the reading