错误无效的语法(__init__.py)使用美丽的汤

时间:2013-11-24 12:12:26

标签: python beautifulsoup syntax-error python-import

我想编写一个从网站内容创建html文件的简单代码。我正在使用beautifulsoup 4库。使用:

创建BeautifulSoup对象时
BeautifulSoup('<html></html>')

我收到此错误:

  

语法无效( init .py,第175行)

并且此行产生错误:

  

来自bs4 import BeautifulSoup

我通过执行setup.py安装了库。

有什么问题?

我的整个代码:

import urllib.request as req
from bs4 import BeautifulSoup

def main():
    get_announcements("92-93", 1, 153, 12)

def get_announcements(year, term, courseID, group):
    website = req.urlopen('http://ce.sharif.edu/courses/' + year + '/' + str(term) + '/ce' + str(courseID) + '-' + str(group) + '/')
    site_content = website.readall()

    soup = BeautifulSoup('<html></html>')

if __name__ == '__main__':
    main()
来自库文件的 init.py 中的

和错误行:

try:
    is_file = os.path.exists(possible_filename)
except Exception, e:   #ERROR!!
    # This is almost certainly a problem involving
    # characters not valid in filenames on this
    # system. Just let it go.
    pass

3 个答案:

答案 0 :(得分:1)

你不是太容易做到这一点,但我认为你发布的内容中有足够的信息来解决你的问题。

import urllib.request as req

此行仅在您使用Python 3.x时有效。由于您超过此行,我将假设情况属实。

except Exception, e:

这一行使用的是Python 2.x语法。您似乎试图在Python 3.x程序中导入Python 2.x库。那不行。在Python 3中,except子句具有此语法(因此您需要as而不是逗号):

("except" [expression ["as" target]] ":" suite)+

只是为了验证,如果我的假设是正确的,语法错误应该指示逗号作为产生问题的实际角色。

我不知道为什么会这样。我刚刚使用pip install BeautifulSoup4安装了bs4,而我在第175行安装的版本中的代码是:

        try:
            is_file = os.path.exists(possible_filename)
        except Exception as e:
            # This is almost certainly a problem involving
            # characters not valid in filenames on this
            # system. Just let it go.
            pass

哪个会奏效。

答案 1 :(得分:1)

我能够在Mac OSX 10.10.1上重现这个问题,它同时包含OSX上的原始Python 2.7.6和3.4.2上的Python IDLE。使用后

python3 setup.py install 

我得到了同样的错误:

>>> import bs4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Applications/Python 3.4/beautifulsoup4-4.3.2/bs4/__init__.py", line 175
    except Exception, e:
                    ^
SyntaxError: invalid syntax

安装程序可能正在读取/Library/Python/2.7/site-packages/上的默认安装目录,并假设BeautifulSoup将在Python 2.7上运行。看起来像是设置中的错误。

答案 2 :(得分:0)

可以找到解决方案here

问题是您下载的模块是用python版本2编写的,它与您在计算机上安装的python版本具有不兼容的语法(版本3)。

要解决此问题,请使用位于的2to3.py工具 ...\Python34\Tools\Scripts手动将bs4目录(...\beautifulsoup4-4.3.2\bs4)中的每个python文件从版本2转换为版本3.

例如输入

'C:\Python34\Tools\Scripts\2to3.py ...\beautifulsoup4-4.3.2\bs4\__init__.py'

进入命令提示符会将__init__.py文件从版本2转换为版本3.