Подтвердить что ты не робот

Beautiful Soup findAll не находит их всех

Я пытаюсь разобрать веб-сайт и получить некоторую информацию с помощью BeautifulSoup.findAll, но он не находит их всех. Я использую python3

код - это

#!/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'])

он печатает только половину из них...

4b9b3361

Ответ 1

Разные HTML-парсеры по-разному работают со сломанным HTML. Эта страница обслуживает сломанный HTML, а синтаксический анализатор lxml не очень хорошо справляется с этим:

>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://mangafox.me/directory/')
>>> soup = BeautifulSoup(r.text, 'lxml')
>>> len(soup.findAll('a', {'class' : 'manga_img'}))
18

Стандартная библиотека html.parser имеет меньше проблем с этой конкретной страницей:

>>> soup = BeautifulSoup(r.text, 'html.parser')
>>> len(soup.findAll('a', {'class' : 'manga_img'}))
44

Переведя это в свой пример с помощью urllib, вы должны указать синтаксический анализатор таким образом:

soup = BeautifulSoup(page.read(), 'html.parser')