初学者:需要将Beautiful Soup 4导入Python
我在codecademy上学了Python,现在想用它从一个网站上提取数据。我还没有自己的Python环境(只用过codecademy的),所以我需要一些建议,告诉我该下载什么来运行我的代码,以及如何把Beautiful Soup这个包导入到我的环境中,这样我就可以使用BS4了。我在用Mac,系统是OSX 10.9.4。谢谢!
2 个回答
在OSX上安装python的easy_install:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo rm distribute_setup.py
sudo easy_install pip
安装完python的easy_install包后,你可以运行:
easy_install beautifulsoup4
这样你就可以在你的python脚本中使用beautifulsoup4了:
from bs4 import BeautifulSoup
接下来,你就可以使用BeautifulSoup这个方法,我想你能从这里继续进行。举个例子:
soup=BeautifulSoup(urlContent)
如果你在用 Python 3.4,应该已经安装了 pip
或者自动安装的 pip
,它的名字是 pip3
。所以你只需要做这个:
$ pip3 install beautifulsoup4
当然,适当的时候要加上 sudo
。
如果你没有 pip
,那你需要去安装它。可以去 打包用户指南 找最新的安装说明,但它会引导你去 pip
的文档,告诉你要做以下几步:
- 下载
get-pip.py
- 用
python3 get-pip.py
安装它(如果需要的话,加上sudo
)
pip
是一个 Unix 命令行程序,而不是 Python 命令。所以,如果你对像 Mac OS X 这样的 Unix 系统一无所知,下面是你该怎么做:
首先,打开 Terminal.app,可以通过 Spotlight(按下 Cmd+Space,然后开始输入 Terminal.app,当全名出现时,按回车)或者通过 Finder(从侧边栏打开应用程序,然后打开实用工具,你会找到 Terminal.app)。
现在你会看到一个运行 bash shell 的文本窗口。就像 Python 用 >>>
提示你输入下一个命令一样,bash 用 $
提示你,或者可能是像 My Computer:/Users/me$
这样的提示。所以,在这个提示后,你输入 pip3 install beautifulsoup4
。如果成功了,那就完成了,你现在安装了 bs4,下次运行 Python 3.4(无论是通过 IDLE,还是在命令行用 python3
,或者其他地方),你就可以导入它了。
如果你看到一个错误,提示 Permission denied
,那你需要用 sudo
来管理你的 Python。你知道像系统偏好设置这样的图形界面程序有时会弹出一个对话框,要求你输入用户名和密码来获取管理员权限吗?sudo
就是你在命令行中做这件事的方法。你输入 sudo pip3 install beautifulsoup4
,它会要求你输入密码。输入后,一切应该就能正常工作了。
如果这些听起来太复杂了,你可以考虑使用比 IDLE 更强大的 Python IDE(集成开发环境)。我没有尝试过所有的(而且 Stack Overflow 也不是寻找推荐的好地方,但你可以在网上搜索),但我知道至少有一些提供了很好的图形界面来管理你安装的包,这样你就不需要使用命令行和 pip
。PyCharm 和 PyDev(Eclipse 的一部分)似乎很受欢迎。不过,你真的应该考虑找个基础教程,学习如何把 Mac 当作 Unix 系统来使用;有很多概念你需要了解,才能写出简单的 Python 脚本。
* 稍微简化一下 PEP 394,当你在同一系统上同时有 2.x 和 3.x(你有——苹果预装了 2.7,而你安装了 3.4),你用 python3
、pip3
等来运行 3.x 版本。
** 如果你不懂基本的 Unix 管理,怎么知道是否需要 sudo
?如果你是通过 Homebrew 安装的 Python 3.x,那就不需要。如果是通过 MacPorts 或 Fink,那就需要。如果是通过 Python.org 的二进制安装程序,或者第三方的二进制安装程序,那就要看你安装时选择的设置,这个你可能不记得……所以先试试不加 sudo
;如果成功了,那就不需要 sudo
来使用 pip
,但如果出现权限错误,再试一次加上 sudo
,如果那样可以成功,那就说明你需要 sudo
来使用 pip
。