当前位置: 首页 > 面试题库 >

BeautifulSoup findAll找不到全部

山越
2023-03-14
问题内容

我正在尝试解析一个网站,并通过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'])

它只打印一半…


问题答案:

不同的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

标准库html.parser在此特定页面上的麻烦较少:

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

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

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


 类似资料:
  • 问题内容: 我正在尝试解析一个网站,并通过BeautifulSoup.findAll获取一些信息,但它并没有全部找到。.我正在使用python3 代码是这个 它只打印其中一半… 问题答案: 不同的HTML解析器对损坏的HTML的处理方式不同。该页面提供了损坏的HTML,解析器对此的处理不佳: 标准库在此特定页面上的麻烦较少: 使用将其转换为您的特定代码示例,您将这样指定解析器:

  • 问题内容: 我写了一个模块,我刚才将其发布到npm(https://npmjs.org/package/wisp) 因此,可以从命令行进行安装: 但是,当我从命令行运行它时,我不断收到未安装乐观主义者的错误消息: 但是,我在package.json中指定了依赖性: 有谁知道该怎么做才能使它运行?我知道它与bin部分有关,将可执行文件添加到bin中,该目录中的node_modules为空。不知道如何

  • 我写了一个模块,不久前发布到npm(https://npmjs.org/package/wisp) 所以它可以从命令行安装: 但是,当我从命令行运行它时,我不断收到一个错误,即未安装optimist: 但是,我在package.json中指定了依赖项: 有人知道该怎么做才能让它运行吗?我知道这与bin部分将可执行文件添加到bin以及该目录中的node_模块为空有关。不知道如何解决这个问题。

  • 编辑: 我稍微调整了一下城墙的配置,现在我被困在了另一个点上。 在Rampart的PostDispatchVerficationHandler中,抛出异常,因为尚未处理安全标头。 日志: 这是安全标头: 这是Rampart的政策文件: 用户凭据在Java代码中设置: 原职务: 我已经用谷歌搜索这个错误好几天了,但我没有主意了。 代码由Axis2为基于此WSDL的SOAP Web服务生成:https

  • 我有以下文件: 我希望这个'app'变量是全局可访问的,因为其他文件是这样使用它的: 在webpack.config.js中,我有以下一行: 我想不出我错过了什么。我的app.js格式不正确吗?为什么仍然不能全局使用?

  • 直到现在(遗留),身份验证工作所需的全部工作就是在subsystems->Security中创建一个具有正确名称的安全域(“referencesapplicationdomain”)。 我的web.xml: 我的jboss-web.xml: 我遵循Wildfly Elytron文档使用JBoss-CLI创建了安全域和http工厂。 当我签入jboss-cli时,我看到安全域已经创建。 然而,当我尝