美丽的汤findAll找不到它们

Cle*_*pto 27 python beautifulsoup findall python-3.x

我正在尝试解析一个网站,并获得一些与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'])
Run Code Online (Sandbox Code Playgroud)

它只打印了一半......

Mar*_*ers 60

不同的HTML解析器与破坏的HTML处理不同.该页面提供了破碎的HTML,并且lxml解析器处理得不是很好:

>>> 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
Run Code Online (Sandbox Code Playgroud)

标准库html.parser在此特定页面上遇到的问题更少:

>>> soup = BeautifulSoup(r.content, 'html.parser')
>>> len(soup.find_all('a', class_='manga_img'))
44
Run Code Online (Sandbox Code Playgroud)

使用urllib它将其转换为您的特定代码示例,您将指定解析器:

soup = BeautifulSoup(page, 'html.parser')  # BeatifulSoup can do the reading
Run Code Online (Sandbox Code Playgroud)

  • 经验; 主要是通过SO帮助这里的人. (11认同)