Python:内置BeautifulSoup的函数

时间:2014-07-24 18:51:45

标签: python python-2.7 html-parsing beautifulsoup

我想使用Beautiful Soup来解析html文件。

首先我做了:

from bs4 import BeautifulSoup

但我有错误:

from bs4 import BeautifulSoup
ImportError: No module named bs4

所以我做了:

import BeautifulSoup

一切都很好。我的问题是:从bs4导入的BeautifulSoup和直接导入的是什么和有什么区别? bs4是python的内置库吗? 2.7

然后我做了:

data = url.openUrl("http://emma-watson.net")
self.soup = BeautifulSoup(data)
links = self.soup.find_all('a')

但我有一个错误:

links = self.soup.find_all('a')
TypeError: 'NoneType' object is not callable

但我不明白我的错误在哪里,因为我从文档中取出了这一行。像soup.find,soup.a,汤这样的功能。 p工作正常,所以这个功能有什么问题?

1 个答案:

答案 0 :(得分:2)

bs4BeautifulSoup同一项目的不同主要版本。两者都是附加模块,您需要单独安装。

  • bs4是BeautifulSoup第4版,目前的主要版本。

  • BeautifulSoup最多是版本3,不再维护版本;最后一个版本是2年多前发布的。

我建议你安装BeautifulSoup 4;它支持Python 3,可插入解析器和CSS选择器语法,以及许多错误修复。 BeautifulSoup 4还清理了所用方法的命名约定。请参阅version 4 documentation

在您的代码中,您使用的是BeautifulSoup 4语法; BeautifulSoup 3将其解释为搜索第一个标记<find_all>并返回None,因为它找不到任何标记。它会对它无法识别的任何属性执行此操作。

在BeautifulSoup 3中,您必须改为使用soup.findAll()