背景:
我在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冻结)但脚本再次抛出相同的错误。
错误确实说,"无法读取/ var / mail / bs4"。为什么期望在那里找到bs4?我确认了" ls" / var / mail /确实是空的。只是变得绝望,我试着" sudo发现/ -atime +1 | grep bs4"但是那并没有发现任何有趣的东西(甚至是bs4的位置)。
错误是说python不了解导入命令是什么?如果是这样,那会怎么样?导入不标准,是否依赖某些库?
我错过了什么?我应该在哪里看下一个?这是一个简单的答案吗? (通常是,但我只是不能看到它。)我是python的一个相对新手,并且渴望但不太了解bash。也是我第一次发布stackoverflow问题,所以提前感谢任何建议/帮助。
答案 0 :(得分:4)
脚本应该以 -
执行python spider2.py
而不是 -
./spider2.py
答案 1 :(得分:3)
为了能够使用./spider2.py
直接从终端执行脚本,您必须在脚本的最开始使用所谓的shebang line为其指定解释器。对于Python,那将是:
#!/usr/bin/env python
from bs4 import BeautifulSoup
# ...
如果没有指定解释器,脚本将使用终端解释器执行,在这种情况下可能bash
,当然这不能运行Python代码。
当然,该文件也必须标记为可执行文件。
或者您可以使用Python解释器执行脚本,而不需要像@theharshest推荐的shebang行:
python spider2.py
我自己更喜欢后一种选择。