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

时间:2014-05-10 23:20:17

标签: python import beautifulsoup screen-scraping

背景:

  • 我在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问题,所以提前感谢任何建议/帮助。

2 个答案:

答案 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

我自己更喜欢后一种选择。