it-swarm.com.de

Schöne Suppe findAll findet sie nicht alle

Ich versuche, eine Website zu analysieren und einige Informationen mit BeautifulSoup.findAll zu erhalten, aber es werden nicht alle gefunden. Ich verwende python3

der Code ist das

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

es druckt nur die Hälfte von ihnen ...

26
Clepto

Verschiedene HTML-Parser gehen unterschiedlich mit fehlerhaftem HTML um. Diese Seite enthält fehlerhaftes HTML, und der lxml -Parser kann damit nicht sehr gut umgehen:

>>> 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

Die Standardbibliothek html.parser hat weniger Probleme mit dieser speziellen Seite:

>>> soup = BeautifulSoup(r.content, 'html.parser')
>>> len(soup.find_all('a', class_='manga_img'))
44

Wenn Sie dies mit urllib in Ihr spezifisches Codebeispiel übersetzen, geben Sie den Parser folgendermaßen an:

soup = BeautifulSoup(page, 'html.parser')  # BeatifulSoup can do the reading
60
Martijn Pieters