Ответ 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')