Beautiful Soup 4 导入错误?安装错误?
背景:
我在使用Mac OSX,版本是10.8.5
运行
python -V
显示我在用的是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上发问,所以提前感谢任何建议或帮助。
2 个回答
如果你想直接在终端里用 ./spider2.py
来运行这个脚本,你需要在脚本的最开始加上一个叫做 shebang行,来指定一个解释器。对于Python来说,这一行应该是:
#!/usr/bin/env python
from bs4 import BeautifulSoup
# ...
如果没有指定解释器,脚本会用终端默认的解释器来执行,通常是 bash
,而这个解释器是无法运行Python代码的。
另外,文件还必须被标记为可执行的。
当然,你也可以直接用Python解释器来运行这个脚本,这样就不需要shebang行了,正如@theharshest所推荐的那样:
python spider2.py
我个人更喜欢后者的方式。
脚本应该这样执行 -
python spider2.py
而不是这样 -
./spider2.py