美丽汤4导入错误?安装错误?

3

背景:

  • 我正在使用Mac OSX 10.8.5操作系统。

  • python -V 命令显示我的Python版本为2.7.2。

  • pip freeze 命令显示我已经安装了beautifulsoup4==4.3.2。

我试图使用Beautiful Soup 4来爬取一个网页,参考这篇教程:http://www.pythonforbeginners.com/python-on-the-web/web-scraping-with-beautifulsoup/.

在我的工作笔记本电脑上按照指示成功运行了一次。但是这不是个工作项目,所以我又在我的个人电脑和我妻子配置相同的电脑上尝试使用同样的脚本,结果出现以下错误:

Melissas-MacBook:scripts Melissa$ ./spider2.py 
from: can't read /var/mail/bs4
./spider2.py: line 3: import: command not found
./spider2.py: line 4: import: command not found
./spider2.py: line 6: syntax error near unexpected token `('
./spider2.py: line 6: `for i in range(1,10): '

以下是我的脚本内容:

from bs4 import BeautifulSoup

import requests
import time

for i in range(1,10): 
    url = "http://memegenerator.net/Futurama-Fry/images/popular/alltime/page/%d" % (i)
    r = requests.get(url)
    data = r.text
    soup = BeautifulSoup(data)
    results = ""
    for link in soup.find_all('img'):
        print(link.get('alt'))

我尝试使用pip卸载,然后使用easy_install重新安装。再次安装似乎成功了(根据pip freeze),但是脚本仍然抛出相同的错误。
错误提示说,“无法读取/var/mail/bs4”。为什么它希望在那里找到bs4?我用“ls”确认了/var/mail/确实是空的。我感到绝望,尝试了“sudo find / -atime +1 | grep bs4”,但是没有发现任何有趣的东西(或者bs4的位置)。
这个错误是说Python不理解import命令吗?如果是这样,那会发生什么?import不是标准的吗?它是否依赖于某个库?
我错过了什么?我接下来应该去哪里看?这是一个简单的答案吗?(通常是这样,但我就是看不到。)我对Python比较新,对Bash也不太熟悉。这也是我第一次发布stackoverflow问题,提前感谢任何建议/帮助。

为什么你要像这样执行脚本 ./spider2.py,可以这样运行它 - python spider2.py - theharshest
当然,您需要通过Python来运行Python脚本。我这样做了,得到了预期的结果。谢谢theharshest. :) - ux-guy
2个回答

4
python spider2.py

替代 -

./spider2.py

2
如果文件被标记为可执行文件,您可能建议一个适当的头文件,以便提问者可以像尝试运行它一样运行它。 - Russia Must Remove Putin
1
@AaronHall 你假设该文件已标记为可执行文件。 - theharshest

3
为了能够直接从终端使用./spider2.py来执行脚本,你需要在脚本的开头使用所谓的shebang行,指定一个解释器。对于Python而言,应该这样写:
#!/usr/bin/env python

from bs4 import BeautifulSoup
# ...

如果没有指定解释器,则使用终端解释器执行脚本,可能在这种情况下是bash,当然无法运行Python代码。

当然,该文件也必须标记为可执行的。

或者,您可以使用Python解释器执行脚本,而无需使用shebang行,如@theharshest所建议的那样:

python spider2.py

我个人更喜欢后一种选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接